Інтеграція AI-трейдинг-бота з Interactive Brokers API

Бот втрачає угоди на стику з брокерським рахунком: ордери дублюються, позиції розходяться з обліком. Ми проєктуємо й налаштовуємо інтеграцію AI-трейдинг-бота під ключ — з контролем кожної заявки. Ручні правки в журналі угод скорочуються в рази.
Часті запитання

Чому AI-трейдинг-бот втрачає угоди на стику з брокерським API

AI-трейдинг-бот ухвалює рішення за власною моделлю стану, а реальні позиції живуть на боці брокера. Варто з'єднанню обірватися в момент підтвердження заявки — і настає розсинхронізація позицій: бот вважає вхід відкритим, хоча його вже немає. Виявляється це не одразу, а коли керування ризиком рахує просадку за неіснуючою позицією.

Після реконекту починається друга половина проблеми — дублі ордерів. Запит пішов, відповідь не повернулася, з'єднання піднялося знову, і бот надсилає заявку повторно, бо ідентифікатор генерується заново при кожному запуску.

На вході обсяг тихо подвоюється, на виході частина позиції залишається незакритою, і ризик рахується за неправильною базою.

Часткове виконання додає третій клас збоїв: заявка закрита не повністю, а стоп і цілі вже перераховані за повним обсягом. Залишок живе на рахунку окремим рядком і видно лише під час звірки, а не в інтерфейсі бота.

Поки ці стики не закриті, в процес входить людина — ранковий розбір розбіжностей, ручні правки угод, звірка позицій за вивантаженнями. Це з'їдає години робочого часу команди й маскує системну помилку під разову.

Ми розбираємо зв'язку бота з рахунком як окремий шар: що вважати джерелом істини, як звірятися після будь-якого обриву з'єднання з брокером і як зробити надсилання заявок стійким до повторів. Далі — як це закривається на рівні інтеграції.

Що дає керована інтеграція: швидкість, стійкість, контроль

Керована інтеграція змінює масштаб часу, у якому працює бот. Замість періодичного опитування рахунку й котирувань ми підписуємося на ринкові події та тримаємо постійне з'єднання з Interactive Brokers — час реакції бота на зміну ціни скорочується із секунд до часток секунди. Заявка встигає піти до того, як рівень піде, а не після нього.

Стійкість торгової логіки тримається на трьох рішеннях: правила входу й виходу разом із ризик-лімітами винесені з коду в конфігурацію, стан позиції відновлюється з журналу угод, а повторне надсилання заявки відсікається унікальним ключем.

Під час обриву зв'язку бот не сліпне — він дораховує стан за фактами виконання й продовжує з тієї точки, де зупинився, а не з нуля.

Із цього складається частка автоматичних угод: закриття за стопом і ціллю, обробка часткових виконань, перенесення рівня захисту й розворот позиції відбуваються без ручного втручання.

Заодно зникає цілий клас відмов — подвійні заявки, заявки без підтвердження, позиції, що залишилися без захисного ордера.

Звірка позицій перетворюється на регламент, а не на ручну перевірку. Позиції, активні ордери, середня ціна й вільна маржа звіряються під час старту, після розриву з'єднання та за розкладом; розбіжність логується й піднімає оповіщення.

Торгова логіка при цьому залишається керованою: ліміти, стопи й правила змінюються в конфігурації, без перезбирання бота.

Варіанти підключення бота до торгового рахунку

Підключення до рахунку в Interactive Brokers будується за одним із чотирьох режимів, і вибір визначає, що бот знає про рахунок і як швидко реагує на зміни.

Варіант Коли підходить Обмеження підключення
Періодичні синхронні запити Низька частота угод і налагодження логіки Затримка між опитуванням і реакцією, зайве навантаження на канал, пропуск швидких рухів ціни
Потокові підписки на події рахунку Реакція на виконання заявок і зміну позиції Залежність від безперервності з'єднання: під час розриву події губляться, потрібна повторна синхронізація
Підписки плюс локальний стан бота Основний режим: багато інструментів, часті угоди Потрібна звірка локального стану з брокерським після кожного розриву й перезапуску
Проміжний шар між ботом і рахунком Кілька стратегій, загальний контроль ризику, журнал дій Ще одна точка відмови: падіння шару зупиняє торгівлю цілком

Гібрид виграє на практиці: бот тримає позиції, заявки й залишки у власному стані, а потокові підписки лише підтверджують зміни. Тоді розрив з'єднання не призводить до хибних рішень — після відновлення звірка повертає стан до ладу, а дублі заявок не надсилаються.

Проміжний шар виправданий, коли стратегій кілька: він тримає єдиний ліміт ризику й журнал дій. Але в нього своя ціна — додаткова затримка на шляху сигналу та ще один компонент, який потрібно обслуговувати.

Як проходить інтеграція: етапи інженерної роботи

Інтеграція торгового бота з брокерським рахунком — не підключення бібліотеки, а збирання контуру, де помилка в одному вузлі обнуляє роботу стратегії.

Тому порядок такий: спочатку розбираємо наявну логіку й схему виконання, потім будуємо, перевіряємо на історії, запускаємо обмежено та передаємо регламенти вашій команді.

Порядок робіт

  1. Аудит торгової логіки та поточної схеми. Розбираємо правила входу й виходу, джерела сигналів, розрахунок розміру позиції. Результат — карта рішень: де бот діє сам, а де потрібне підтвердження.
  2. Проєктування контуру виконання. Визначаємо, як зберігається стан позицій і заявок та що вважаємо джерелом істини — потік котирувань чи звіти брокера.
  3. Шар доступу до рахунку. Запити ідемпотентні, є повторні спроби, контроль дублів і відновлення після розриву зв'язку. Кожна заявка позначена ідентифікатором і потрапляє до журналу — збій розбираємо за фактами.
  4. Перевірка на історичних даних. Прогін на минулих котируваннях із поправкою на прослизання, комісії та затримки виконання. Дивимося просадку й поведінку на розривних рухах, а не лише дохідність.
  5. Тестовий контур. Звіряємо сигнали бота з тим, що було б реально виконано: розбіжності видно до старту.
  6. Обмежений запуск. Малий обсяг операцій, жорсткі ліміти за позицією та втратами, щоденний контроль. Обсяг зростає лише після збігу поведінки з очікуваною.
  7. Передача регламентів. Документація: розгортання, аварійне вимкнення, ознаки втручання, відновлення стану після збою.

Що замовник отримує на руки: конфігурації та регламенти

На руки замовник отримує не лише працюючого бота, а й комплект, за яким його можна експлуатувати, передати іншому інженеру й підняти заново після збою.

Усе перелічене лежить у репозиторії поруч із кодом і оновлюється разом із ним — інакше документація розходиться з реальністю за пару місяців.

  • Робочі конфігурації бота. Профілі для тестового й реального рахунку: інструменти, ліміти на позицію та денний обіг, робочі інтервали, пороги захистів. Перемикання середовища — зміною профілю, без правок коду.
  • Схема взаємодії з рахунком. Як влаштований обмін із брокерським шлюзом Interactive Brokers: підписка на котирування, надсилання заявок і підтверджень, часткові виконання, обриви зв'язку та точки, де бот зобов'язаний зупинити торгівлю сам.
  • Політики доступу й ключів. Які облікові дані потрібні, де зберігаються, хто й як їх змінює, що робити при витоку. Право торгувати й право змінювати налаштування розведені за різними ролями.
  • Інструкція з відновлення. Порядок дій: підняти бота з нуля, звірити позиції зі звітом брокера, закрити розбіжності, повернутися до торгівлі після аварійної зупинки.
  • Регламент супроводу. Що вважається аварійною подією, за чим стежить черговий, час реакції, порядок оновлення стратегії та склад регулярного звіту.
  • Журнал змін і прогони на історії. Кожна правка стратегії супроводжується перевіркою на історичних даних і на тестовому рахунку — видно, що саме вплинуло на результат.

Кейс: прибрали обриви ордерів і скоротили ручні правки

Замовник торгував через Interactive Brokers, а AI трейдинг бот виставляв ордери за власною моделлю. Зв'язка трималася на одному довгоживучому з'єднанні: планові роботи брокера, падіння каналу або перезапуск шлюзу — і потік подій губився. Бот продовжував вважати, що позиції відкриті, хоча картина на рахунку вже була іншою.

Ціна такого обриву — не сам простій, а тиха втрата стану рахунку. Частина виконань до бота не доходила, дублікати заявок відсікалися вручну, ліміти за інструментами рахувалися за застарілими даними.

Черговий правив приблизно третину спрацьованих сигналів, і кожен розбір — це ризик виставити позицію двічі або пропустити стоп.

Як перебудували зв'язку

Локальна пам'ять бота перестала бути джерелом істини. Кожне виконання, скасування та часткове заповнення пишуться до журналу, а під час старту бот не довіряє своїй моделі, а звіряє її з брокером за відкритими заявками й позиціями.

Окремо поставили автоматичну звірку: стан рахунку, позиції та активні заявки зіставляються з локальним станом на короткому інтервалі. Розбіжність піднімає алерт і блокує нові входи за ураженим інструментом до звірки — помилка не встигає перетворитися на зайву позицію.

Метрики до й після: частка ручних правок — з третини сигналів до менш ніж 2%, відновлення після збою — з півгодини розбору до автоматичного підйому за секунди, розбіжності під час планової звірки — нульові за місяць спостережень. Клас відмов «бот не знає, що позиція є» закрито на рівні логіки запуску.

Чим відрізняється синхронний обмін від потокового і що вибрати

Це два різні режими отримання стану рахунку, і вибір між ними визначається не зручністю реалізації, а тим, скільки живе торгове рішення. За синхронного обміну бот сам запитує позиції, баланс і котирування за розкладом. За потокового — один раз підписується на події й далі отримує зміни в міру їх появи.

Ціна вибору видна в затримці оновлення. Поки між двома запитами йде пауза, рахунок уже змінився: частина заявки виконалася, маржа просіла, ціна пішла від рівня входу.

Логіка, побудована на зрізі, ухвалює рішення за застарілими даними й отримує виконання за ціною, якої на момент розрахунку вже не було. На спокійному ринку це майже непомітно, на сплеску волатильності розбіжність стає основною статтею збитку.

Різниця у вимогах:

Режим Коли підходить Обмеження
Синхронний обмін Ребалансування за розкладом, звітність, стратегії на денних барах Між запитами рахунок змінюється — рішення за застарілими даними
Потоковий обмін Супровід відкритих позицій, стоп-заявки, контроль маржі Потрібні відсікання дублів, обробка розривів і повторна підписка
Змішаний Торгівля всередині дня з контролем розбіжностей Дорожче в підтримці: два контури потрібно узгоджувати

На практиці частіше працює гібрид: під час старту беремо повний знімок синхронно, далі тримаємо потокові підписки, а опитування залишаємо для періодичної звірки — воно ловить розбіжності після розривів з'єднання.

Вибір режиму — це питання допустимого віку даних: якщо торгове рішення живе довше за інтервал опитування, синхронного обміну достатньо.

Технічні сумніви перед стартом: розбираємо за пунктами

Інженерні заперечення перед стартом повторюються від проєкту до проєкту: що буде при обриві зв'язку, як не надіслати заявку двічі, хто відповідає за ризик-ліміти. Розбираємо їх до початку робіт — на інтеграції з Interactive Brokers ці місця закриваються конкретними механізмами.

Як виключити дублі угод при обриві зв'язку?

У кожної заявки унікальний ключ у журналі, а перед постановкою шар виконання звіряє намір із фактичними позиціями та активними заявками в брокера. Після розриву відновлення йде за номером заявки, а не сліпим повтором.

Що відбувається при падінні процесу або втраті каналу?

Бот працює під сторожовим процесом: піднімається заново й відновлює стан із журналу, а не з нуля. Якщо канал недоступний довше за поріг, спрацьовує аварійний сценарій — зупинка торгівлі або зведення позицій, за вашими правилами.

Хто відповідає за ризик-ліміти і чи можна вести кілька рахунків?

Правила задаєте ви, ми зашиваємо їх в окремий шар перевірок перед надсиланням заявки: ліміт на інструмент, на портфель, денний стоп. Стратегія їх не обходить. Рахунки ведемо роздільними контурами, ліміти й журнал рахуються для кожного окремо.

Як проходить передача управління й доступів?

За регламентом: зупиняємо торгівлю, фіксуємо позиції, передаємо доступи, конфігурацію та документацію. Далі контур працює під вашим контролем — із супроводом або без.

Обговоримо задачу: з чого починається інтеграція

Перше обговорення задачі потрібне, щоб зібрати вихідні дані, а не показати презентацію. Нам важливо зрозуміти торгову логіку: за якими подіями бот входить і виходить, як рахує розмір позиції, де стоять жорсткі обмеження за ризиком.

Від цього залежить архітектура — де тримати стан, як часто звертатися до брокера й що робити при розбіжності між нашими даними та його звітом.

  • торгова логіка: сигнали, робочі інтервали, список інструментів, правила входу й виходу з позиції;
  • обмеження ризику: ліміт на позицію, денний ліміт збитку, кількість одночасних заявок, поведінка при спрацюванні захисної заявки;
  • умови роботи: реальний рахунок або тестовий контур, доступи, джерело ринкових даних, режим — лише сигнали або автоматичне виконання;
  • що вже готово: код стратегії, вивантаження історії угод, наявні скрипти, вимоги до журналу подій;
  • правила відмов: повторне надсилання заявки, обробка розриву зв'язку, ручний стоп-кран і порядок закриття відкритих позицій.

За цими відповідями збираємо план робіт — від підключення до API брокера й звірки даних із терміналом до переведення на реальний рахунок. Повертаємося з розбивкою за етапами, оцінкою строків за кожним і переліком того, що знадобиться з вашого боку.

Наступний крок — визначити, хто у вас ухвалює рішення з торгової логіки та коли можна отримати тестові доступи.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142