[Финтех · Backend-разработка · Автоматизация данных]

Движок анализа торговых сигналов

Автоматизированный конвейер, который читает рыночные данные криптовалют, сужает широкий набор инструментов до отобранных кандидатов и превращает их в структурированные, проверенные торговые сигналы.

Принадлежность
Подсистема экосистемы торговой и AI-автоматизации Astra Raven
Технический фокус
PythonAsync I/OMarket Data APIsRule EnginesSQLScheduling
Что демонстрирует
Python backend · Финансовые API · Обработка данных · Движки правил · Задачи по расписанию · Состояние в SQL · Инженерия надёжности

01Обзор проекта

Движок сигналов — аналитическое ядро Astra Raven. По расписанию он собирает рыночные данные через внешние API бирж, оценивает рыночный контекст и пропускает каждый инструмент через последовательность фильтров, прежде чем что-либо дойдёт до пользователя.

Результат — не свободное мнение, а структурированный объект: инструмент, направление, зона входа, стоп-лосс, цели и причины, по которым он прошёл проверку. Его могут сохранять, отслеживать и оценивать следующие системы.

02Инженерная задача

Рыночные данные зашумлены и приходят от внешних сервисов, которые бывают медленными, ограничивают частоту запросов или временно недоступны. Движок должен принимать стабильные решения в этих условиях и оставлять след, объясняющий каждое из них.

  • A

    Обработать много инструментов в запланированное окно, не блокируясь на медленных ответах.

  • B

    Отделить определение рыночного контекста от оценки конкретного инструмента, чтобы каждый этап можно было анализировать отдельно.

  • C

    Отсеивать неполных или противоречивых кандидатов как можно раньше вместо выдачи некачественного результата.

  • D

    Сохранять каждый сигнал с контекстом, достаточным для последующей оценки его результата.

03Архитектура решения

Наведите или нажмите на этап.

01

Рыночные данные

Свечи, объёмы и метаданные инструментов загружаются через внешние API бирж с таймаутами и ограничением повторов.

04Основные компоненты

  • 01

    Слой получения данных

    Асинхронные сборщики рыночных временных рядов с контролем частоты запросов, таймаутами и корректной обработкой неполных ответов.

  • 02

    Модуль рыночного контекста

    Классифицирует текущее состояние рынка, чтобы последующие фильтры адаптировали своё поведение.

  • 03

    Ранжирование кандидатов

    Фильтрует набор инструментов и ранжирует оставшиеся, сохраняя конвейер быстрым и сфокусированным.

  • 04

    Цепочка проверок

    Упорядоченные, независимо тестируемые проверки. Кандидат, не прошедший любую из них, отбрасывается с записанной причиной.

  • 05

    Хранение сигналов

    SQL-хранилище сигналов, их параметров и жизненного цикла, которое используют отслеживание и отчёты.

  • 06

    Планировщик и отчёты

    Запуск по расписанию, отслеживание результатов и диагностические сводки для оператора.

05Технологический стек

Ядро

  • Python
  • asyncio
  • dataclasses

Данные

  • Exchange REST APIs
  • Time-series processing
  • SQLite / SQL

Эксплуатация

  • Scheduled jobs
  • Structured logging
  • Reports

06Интерактивная демонстрация

Симуляция конвейера сигналов

ИллюстрацияИллюстративное демо. Синтетический инструмент и сгенерированные цены — без подключения к рынку, без реальных параметров стратегии и не является торговой рекомендацией.

signal-engine · simulationожидание
Сценарий

  1. Рыночные данные
  2. Анализ рынка
  3. Отбор кандидатов
  4. Проверка сигнала
  5. Проверки риска
  6. Выдача сигнала
  7. Мониторинг
DEMO/USDT · synthetic 1hcontext —

$ press “Run pipeline” to process a synthetic market snapshot

Результат сигнала

—

07Инженерные решения

  1. 01

    Сначала контекст, потом кандидаты

    Однократная оценка состояния рынка в начале упрощает логику по отдельным инструментам и делает обоснование каждого сигнала понятнее.

  2. 02

    Отсеивать рано и фиксировать причину

    Каждый шаг проверки может отклонить кандидата с явной причиной. Меньше сигналов с понятным происхождением ценнее, чем много необъяснимых.

  3. 03

    Только структурированный результат

    Сигналы — это типизированные объекты, а не текст. Доставка, отслеживание и отчёты работают с одной и той же структурой.

  4. 04

    Детерминированное ядро

    Путь принятия решения основан на правилах и воспроизводим для одинаковых входных данных, поэтому регрессии можно обнаружить.

08Надёжность и тестирование

  • Таймауты и ограниченные повторы для каждого внешнего запроса.
  • Проверка формы входящих данных до начала расчётов.
  • Регрессионные проверки при изменении логики фильтров.
  • Логи и отчёты, по которым можно объяснить пропущенный или отклонённый инструмент.

09Пример кода

validation_chain.py python
from dataclasses import dataclass, field
from typing import Callable

@dataclass
class Candidate:
    symbol: str
    direction: str          # "LONG" | "SHORT"
    entry: float
    stop_loss: float
    reasons: list[str] = field(default_factory=list)

Check = Callable[[Candidate], str | None]   # returns a rejection reason or None

def has_valid_direction(c: Candidate) -> str | None:
    return None if c.direction in {"LONG", "SHORT"} else "unknown direction"

def stop_on_correct_side(c: Candidate) -> str | None:
    ok = c.stop_loss < c.entry if c.direction == "LONG" else c.stop_loss > c.entry
    return None if ok else "stop loss on wrong side of entry"

CHAIN: list[Check] = [has_valid_direction, stop_on_correct_side]

def run_chain(c: Candidate) -> tuple[bool, str | None]:
    for check in CHAIN:
        if (reason := check(c)) is not None:
            return False, f"{check.__name__}: {reason}"
        c.reasons.append(check.__name__)
    return True, None

Иллюстрация Иллюстративный инженерный пример — упрощённая цепочка проверок, не production-код.

Исходный код продукта закрыт. Примеры показывают инженерный подход, а не внутреннюю логику. Больше — в Engineering Lab.

10Возможное развитие

  • Подключаемые источники данных для других площадок и классов активов.
  • Стенд для бэктестов, прогоняющий сохранённые данные через ту же цепочку проверок.
  • Дашборд метрик по этапам, показывающий, где отсеиваются кандидаты.
Следующий кейс · 02 Управление рисками и жизненный цикл сделок Торговая инфраструктура · State machines · Backend-автоматизация