Реализация размещения OCO-ордера в мобильном приложении биржи

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация размещения OCO-ордера в мобильном приложении биржи
Средний
~3-5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация размещения OCO-ордера в мобильном приложении биржи

OCO (One-Cancels-the-Other) — это пара из лимитного и стоп-лимитного ордера, связанных на уровне биржи: при исполнении одного второй отменяется автоматически. Классическое применение: купил BTC по 40 000, поставил Take Profit на 45 000 (лимитный) и Stop Loss на 38 000 (стоп-лимитный). Какой сработает первым — второй исчезает.

На Binance API OCO — отдельный endpoint: POST /api/v3/order/oco. Он принимает семь параметров одновременно, и у него своя логика ошибок. Интерфейс должен помочь пользователю корректно заполнить все семь полей, не запутавшись.

Параметры OCO и их порядок

Параметр Описание
symbol Торговая пара
side BUY или SELL
quantity Объём (одинаковый для обоих ордеров)
price Лимитная цена (Take Profit / Buy Limit)
stopPrice Цена активации стоп-ордера
stopLimitPrice Лимитная цена исполнения после активации
stopLimitTimeInForce GTC / IOC / FOK для стоп-ордера

quantity — общий для обоих ордеров. Это важно показать в UI: одно поле объёма, а не два.

Логика валидации цен для SELL OCO

При продаже: price > currentPrice > stopPrice > stopLimitPrice.

// Android — валидация ценовой логики OCO SELL
data class OcoValidationError(val field: String, val message: String)

fun validateOcoSell(
    currentPrice: BigDecimal,
    limitPrice: BigDecimal,
    stopPrice: BigDecimal,
    stopLimitPrice: BigDecimal
): List<OcoValidationError> {
    val errors = mutableListOf<OcoValidationError>()
    if (limitPrice <= currentPrice)
        errors += OcoValidationError("price", "Take Profit должен быть выше текущей цены")
    if (stopPrice >= currentPrice)
        errors += OcoValidationError("stopPrice", "Stop цена должна быть ниже текущей цены")
    if (stopLimitPrice >= stopPrice)
        errors += OcoValidationError("stopLimitPrice", "Лимит стопа должен быть ниже цены активации")
    return errors
}

Для BUY OCO логика зеркальная: stopLimitPrice > stopPrice > currentPrice > price.

UI-концепция: одна карточка — два уровня

Показывать OCO как единую карточку с визуализацией трёх ценовых уровней на мини-шкале:

▲ Take Profit: 45 000 USDT  (лимитный ордер)
│
● Текущая цена: ~41 500 USDT
│
▼ Stop: 38 500 → Limit: 38 200 USDT  (стоп-лимитный)

Цвет: зелёный для Take Profit, красный для Stop Loss. Это снижает когнитивную нагрузку и число ошибок при заполнении.

Отмена и статусы

OCO на Binance имеет orderListId — ID группы. При отображении в истории ордеров группируй оба ордера под одним orderListId. Если один исполнен — второй помечается как CANCELED с причиной OTHER_SIDE_CANCELED.

Событие в WebSocket: listOrderStatus с типом OCO. При переходе в ALL_DONE — отправить уведомление с указанием, какой из двух ордеров сработал.

Сроки: 3–5 дней: форма с семью параметрами, мини-шкала визуализации цен, валидация логики для BUY/SELL, группировка в истории ордеров, push при исполнении.