NicolasSavin-AI-FOREX-SIGNAL-PLATFORM

NicolasSavin AI FOREX SIGNAL PLATFORM — Версия 3.8

Платформа на FastAPI с модульным backend, тёмным профессиональным frontend и подготовленными API-контрактами для live-сигналов, news alert и будущей интеграции с MT4.

Что обновлено в версии 3.8

Что обновлено в версии 3.7

Что обновлено в версии 3.6

Что обновлено в версии 3.5

Что обновлено в версии 3.4

Backend modules

Основные backend-модули:

API

Базовые маршруты

Новый API сигналов

Новый API новостей

Подготовка к MT4

Analytics API

AI Chat API

{
  "reply": "...",
  "source": "openai",
  "dataStatus": "live|fallback",
  "warnings": []
}

Если OpenAI недоступен или выключен, сервер честно возвращает fallback-ответ без выдуманных market data.

Контракты данных

Расширенная модель сигнала

Сигнал теперь поддерживает:

Persistent Trade Idea contract

Каждая идея теперь имеет устойчивую идентичность и lifecycle:

Важно:

Volume Delta priority chain

MT4/FutureVolume слой теперь передаёт стабильный объект volume_delta в payload и prop score:

Приоритет расчёта: сначала реальные буферы FutureDelta (delta/cumdelta), затем proxy-дельта future_volume * body_ratio, затем proxy-дельта tick_volume * body_ratio, где body_ratio = (close - open) / max(high - low, tiny). Prop engine подтверждает BUY только при росте цены и CumDelta, SELL — при падении цены и CumDelta; при расхождении выставляется delta_divergence=true и score уменьшается.

Модель статистики сигналов

Ответ GET /api/signals дополнительно содержит:

Модель news alert

Новость нормализуется в контракт с полями:

Архитектура данных

Система подготовлена для следующих источников:

Если внешние данные недоступны, платформа:

Покрытие live-сигналов

Запуск

pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000
# либо совместимый entrypoint для деплоя
uvicorn main:app --host 0.0.0.0 --port 8000

Render

uvicorn app.main:app --host 0.0.0.0 --port $PORT
# либо если платформа запускает корневой модуль
uvicorn main:app --host 0.0.0.0 --port $PORT

Новости рынка

MT4 bridge contract

Эндпоинты GET /api/mt4/signals и POST /api/mt4/export подготавливают инфраструктуру для будущего советника MT4:

Принципы данных

Новый analytics/data слой

Архитектура разбита на отдельные модули:

Какие признаки считаются

Что уже реально работает

Что пока заглушка

AI Chat

Переменные окружения

OPENROUTER_API_KEY=
OPENROUTER_MODEL=deepseek/deepseek-chat
OPENROUTER_TIMEOUT=30
CHAT_ENABLED=true
SENTIMENT_PROVIDER=mock
OANDA_SENTIMENT_BASE_URL=
OANDA_SENTIMENT_API_KEY=
SENTIMENT_WEIGHT=0.12
TWELVEDATA_API_KEY=
TWELVEDATA_TIMEOUT=4
TWELVEDATA_OUTPUTSIZE=50

Sentiment

Persistent Trade Ideas

Unified idea pipeline (critical refactor)

Проверка ingest опционных уровней для /ideas

Endpoint POST /api/options/levels позволяет загрузить реальные/ручные/MT4 уровни опционного слоя в Ideas без synthetic-данных. Прямой scraping CME остаётся отдельной задачей, но ingest-слой уже позволяет питать /ideas/market и /api/ideas актуальными уровнями из manual | mt4_optionsfx | cme_public.

Проверка вручную:

curl -X POST http://127.0.0.1:8000/api/options/levels \
  -H "Content-Type: application/json" \
  -d '{
    "symbol": "EURUSD",
    "underlying_price": 1.085,
    "timestamp": "2026-05-03T12:00:00Z",
    "source": "mt4_optionsfx",
    "levels": [
      {"type": "max_pain", "price": 1.08},
      {"type": "put", "price": 1.075},
      {"type": "call", "price": 1.095}
    ],
    "metadata": {}
  }'

curl http://127.0.0.1:8000/api/options/levels/EURUSD
curl http://127.0.0.1:8000/ideas/market

External Telegram options confirmation

Статистика и архив сигналов

DPOC из Future_Volume_v5.00

Существующий MT4 bridge принимает текущий дневной DPOC без отдельного маршрута: передайте dpoc_price (также поддерживаются aliases dpoc, daily_dpoc, daily_dpoc_price) в GET /api/mt4/ingest-get, POST /api/mt4/volume-clusters или legacy POST /ideas/market вместе с FutureVolume payload.

Backend сохраняет реальный уровень индикатора как dpoc_price, рассчитывает подписанное поле distance_to_dpoc_pips от текущей цены и публикует оба поля на верхнем уровне идеи и внутри market_structure. DPOC используется только как подтверждение: BUY получает +3 score при цене выше DPOC, SELL — +3 при цене ниже DPOC. Отсутствующий или неподтверждающий DPOC не блокирует сделку.

Диагностика таймаутов /ideas/market

Маршрут /ideas/market использует stale-while-revalidate кэш (TTL задаётся через MARKET_IDEAS_CACHE_TTL_SECONDS, по умолчанию 60 секунд). Построение рынка запускается в фоне при старте приложения и при устаревании кэша, поэтому внешний HTTP/LLM provider больше не блокирует основной запрос Render.

Для потенциально медленных этапов пишутся парные структурированные записи START / END с elapsed_ms и флагом slow_over_5s. В Render logs можно фильтровать timing operation= и отдельно проверять build_market, generate_trade_ideas, enrich_ideas_with_prop_scores, enrich_idea_with_openai_narrative, options_analysis, CME_OptionsFX и chart_endpoint.