QuoteFeed.Protocol
0.1.7
dotnet add package QuoteFeed.Protocol --version 0.1.7
NuGet\Install-Package QuoteFeed.Protocol -Version 0.1.7
<PackageReference Include="QuoteFeed.Protocol" Version="0.1.7" />
<PackageVersion Include="QuoteFeed.Protocol" Version="0.1.7" />
<PackageReference Include="QuoteFeed.Protocol" />
paket add QuoteFeed.Protocol --version 0.1.7
#r "nuget: QuoteFeed.Protocol, 0.1.7"
#:package QuoteFeed.Protocol@0.1.7
#addin nuget:?package=QuoteFeed.Protocol&version=0.1.7
#tool nuget:?package=QuoteFeed.Protocol&version=0.1.7
QuoteFeed
Высокопроизводительная система распределения биржевых котировок в реальном времени.
Описание
QuoteFeed — это платформа для получения котировок от различных поставщиков (брокеры через MT4/MT5, Interactive Brokers, FIX-протокол) и их распределения подписчикам с минимальной задержкой. Котировки передаются напрямую от узла-поставщика к клиентам по UDP, минуя центральный сервер.
Ключевые особенности
- Низкая латентность — прямая доставка котировок по UDP, бинарный протокол, zero-copy сериализация
- Универсальный формат — единая модель символов независимо от источника (MT4, MT5, FIX)
- Масштабируемость — поддержка множества Provider Nodes в разных локациях
- Работа с NAT — клиенты за NAT могут получать котировки без проброса портов
- Модульность — легко добавлять новые источники котировок через систему коннекторов
Архитектура
┌─────────────────┐ ┌─────────────────┐
│ Master Node │◄───────►│ Provider Node │──── MT5 API ────► Broker A
│ (управление) │ │ (котировки) │──── MT4 API ────► Broker B
└────────┬────────┘ └────────┬────────┘
│ │
│ gRPC │ UDP
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Backend Server │ │ Clients │
│ (ASP.NET) │ │ (WPF/WinForms) │
└─────────────────┘ └─────────────────┘
Master Node — центральный узел управления. Хранит справочник символов, управляет авторизацией, генерирует токены сессий. Не участвует в передаче котировок.
Provider Node — узел-поставщик. Подключается к брокерам через MT4/MT5 API, нормализует котировки, отправляет их клиентам по UDP.
Client Library — библиотека для интеграции в клиентские приложения.
Структура проекта
QuoteFeed/
├── docs/ # Документация
│ └── SPECIFICATION.md # Детальная спецификация
├── src/
│ ├── QuoteFeed.Core/ # Общие модели и утилиты
│ ├── QuoteFeed.Protocol/ # Бинарный протокол и сериализация
│ ├── QuoteFeed.Connectors/ # Общие коннекторы (папка Base и конкретные реализации)
│ ├── QuoteFeed.ProviderNode/ # Приложение Provider Node
│ ├── QuoteFeed.MasterNode/ # Приложение Master Node (ASP.NET Core)
│ └── QuoteFeed.Client/ # Клиентская библиотека
├── tests/ # Тесты
├── samples/ # Примеры использования
└── tools/ # Вспомогательные утилиты
Требования
- .NET 8.0 SDK
- PostgreSQL 14+ (для production) или SQLite (для разработки)
- Redis (опционально, для production)
Быстрый старт
Сборка
git clone https://github.com/your-org/QuoteFeed.git
cd QuoteFeed
dotnet build
Запуск Master Node
cd src/QuoteFeed.MasterNode
dotnet run
Локально в Development MasterNode поднимает два порта:
- REST (HTTP/1.1):
http://localhost:5000 - gRPC (h2c, HTTP/2):
http://localhost:5001
Запуск Provider Node
cd src/QuoteFeed.ProviderNode
dotnet run
Для локального smoke-теста (Master + Provider + Sample) по умолчанию используется src/QuoteFeed.ProviderNode/appsettings.Development.json:
- Provider Node регистрируется в Master Node (gRPC) (
http://localhost:5001) - включён
Mockконнектор с символамиEUR/USD (47)иXAU/USD (305)
Запуск тестового клиента
cd samples/QuoteFeed.SampleConsoleClient
dotnet run
По умолчанию sample клиент получает токен через Master Node (gRPC) (http://localhost:5001) и затем подключается к выбранному Provider Node по UDP.
Пример с явными параметрами:
dotnet run -- http://localhost:5001 sample-client 1 "EUR/USD,XAU/USD"
Конфигурация
Provider Node (appsettings.json)
См. пример: docs/config/providernode.appsettings.example.json.
Master Node (appsettings.json)
См. пример: docs/config/masternode.appsettings.example.json.
Документация
- Руководство по интеграции — как добавить котировки в ваш проект
- Спецификация проекта — детальное описание архитектуры, протокола и API
- Протокол UDP — формат бинарных сообщений
- Руководство по развёртыванию — инструкции для production
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- QuoteFeed.Core (>= 0.1.7)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on QuoteFeed.Protocol:
| Package | Downloads |
|---|---|
|
QuoteFeed.Client
Client library for QuoteFeed - easily integrate real-time market data into your .NET applications with auto-reconnect and dependency injection support. |
GitHub repositories
This package is not used by any popular GitHub repositories.