90 000
Информационные технологии и интернет
Май 2024
Управление торговлей сразу на множестве счетов через штатные веб-интерфейсы бирж непрактично. Каждую сделку приходится вручную повторять на каждом аккаунте, заново пересчитывать объем под индивидуальный баланс и плечо, отдельно задавать тейк-профит и стоп-лосс. На волатильном рынке задержка даже в минуты дает разные цены входа и прямые убытки. Параллельно требовалось вести сводный учет прибыли по всем счетам с разбивкой по периодам и автоматическим расчетом комиссионного вознаграждения за управление.
Ключевые требования:
- единый терминал для работы с несколькими биржами и произвольным количеством аккаунтов;
- выставление, доливка, частичное и полное закрытие позиций сразу на всех активных счетах одним действием с автоматическим расчетом объема как доли от баланса каждого счета;
- управление тейк-профитом и стоп-лоссом как по абсолютной цене, так и по проценту доходности с мгновенным взаимным пересчетом;
- обновление балансов и позиций в режиме реального времени;
- отчетность по прибыли за день, неделю, месяц, год и произвольный диапазон дат с учетом комиссии.
Реализовано настольное приложение на C# и WPF с собственным слоем абстракции над биржами. В основе лежит единый контракт работы с биржей, от которого наследуются конкретные адаптеры Bybit и MEXC. Вся бизнес-логика терминала оперирует этим контрактом и не знает деталей конкретного API, поэтому подключение новой биржи сводится к написанию одного изолированного адаптера без изменения остального кода.
Торговые операции построены по принципу веерного исполнения: одно действие транслируется во все активные счета, причем объем для каждого вычисляется как заданный процент от его собственного баланса и округляется до шага лота конкретного инструмента. Поверх этого работает движок агрегации, который собирает позиции и лимитные ордера со всех аккаунтов и сводит их в единую таблицу с усредненной ценой входа и суммарной нереализованной и реализованной прибылью.
Данные обновляются непрерывным асинхронным циклом опроса с защитой от наложения итераций. Управление риском вынесено в отдельный модуль, где тейк-профит и стоп-лосс задаются и в цене, и в проценте ROI с двусторонним пересчетом на лету. Блок отчетности постранично выгружает историю закрытых сделок за год и формирует сводку прибыли по каждому счету с автоматическим расчетом комиссии. Дополнительно встроена защита приложения от несанкционированного запуска через привязку к оборудованию и удаленный механизм отзыва доступа.
Тиражирование сделки по десяткам счетов сокращено с нескольких минут ручной работы до одного действия, а параметры риска по всем аккаунтам гарантированно идентичны.
Сводные данные по балансам и позициям обновляются раз в секунду, что обеспечивает контроль портфеля близко к реальному времени.
Поддержаны две биржи через единый интерфейс, подключение следующей локализовано в одном адаптере и не затрагивает остальной код.
История прибыли собирается на глубину до 12 месяцев и автоматически сводится в отчет по периодам с расчетом комиссионного вознаграждения.
Полностью исключены ручные ошибки расчета объема и дублирования ордеров, а точность денежных операций обеспечена арифметикой decimal.
Приложение защищено от несанкционированного запуска привязкой к оборудованию и удаленным отзывом доступа.