Как мы с помощью ИИ пишем коннекторы к криптобиржам

Или как ИИ может сэкономить вам часы работы, но не спасёт от необходимости проверять каждый шаг.
Или как ИИ может сэкономить вам часы работы, но не спасёт от необходимости проверять каждый шаг.

Сентябрь 2024 года. Мы, команда StockSharp, активно используем ИИ для написания коннекторов к криптобиржам. Но спешу вас предупредить — если вы читаете эту статью в 2025 году или позже, всё это может уже устареть. Если вы из будущего, добро пожаловать в прошлое! И не забудьте проверить, актуальны ли наши методы.

Наш путь с ИИ начался с ChatGPT 3.5, который, откровенно говоря, не мог бы написать не то что коннектор для криптобиржи, а даже простую торговую стратегию. Однако с приходом ChatGPT 4.0 и Claude Sonnet 3.5 ситуация резко изменилась. Теперь ИИ может писать сложные модули кода, хотя и с оговорками: приходится вмешиваться, уточнять и исправлять ошибки, что, впрочем, стало уже нормой в нашем процессе.

Шаг 1. Запуск проекта в Claude.ai

Прежде чем начать писать новый коннектор, первым делом мы создаём проект в Claude.ai. Это не просто чат, который забудет всё, как только вы его закроете. Проект позволяет сохранять всё, что вы туда загружаете: коды, документы, комментарии. Это аналог настроек Custom GPT, где ИИ «учится» на ваших примерах и указаниях, а не просто отвечает на вопросы.

project.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Интерфейс создания проекта в Claude.ai. Здесь сохраняются все данные и примеры, что позволяет поддерживать контекст работы.

Claude.ai — это как ваш личный программист, который что-то понимает, но без вашего надзора может написать что-то, от чего волосы на голове зашевелятся. Так что держите рядом документацию и свою бдительность.

Шаг 2. Копируем существующий код

Чтобы не изобретать велосипед каждый раз, мы берем за основу уже существующий коннектор, например, для Coinbase. Мы копируем структуру проекта и адаптируем все ключевые классы и методы под новую биржу. Это только начало пути — дальше начинается самое интересное.

Шаг 3. Адаптация WebSocket клиента

Теперь пора настраивать WebSocket клиента для новой биржи. Для примера возьмем GateIO Spot WebSocket v4. Claude.ai помогает с генерацией кода, но тут начинается наша постоянная борьба с неточностями. ИИ частенько генерирует код, который в теории кажется правильным, но на практике нужно дополнять и исправлять.

1.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Исходный код WebSocket клиента для одной из бирж, сгенерированный Claude.ai. ИИ предлагает расширить типы данных и события.

Когда доходит до аутентификации, ИИ часто ошибается, и приходится вручную добавлять недостающие элементы. Claude может забыть даже такие базовые вещи, как авторизация перед подпиской на каналы WebSocket.

2.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Claude.ai допустил ошибку при реализации авторизации WebSocket. Мы исправили код и добавили корректную авторизацию перед подключением.

Мы также переделываем код так, чтобы сделать его более гибким и передавать адрес WebSocket через параметр. Это позволяет нам легко адаптироваться к различным биржам и их API.

3.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Пример кода, где веб-сокет передается как параметр, что делает архитектуру более гибкой.

Шаг 4. Настройка REST клиента и адаптера

После настройки WebSocket клиента мы приступаем к REST клиенту. Claude.ai генерирует базовые запросы, но нам приходится вручную уточнять, корректны ли они. API бирж отличаются, и нужно быть внимательным, чтобы не пропустить важные детали в документации.

Когда клиент готов, мы переходим к адаптеру для StockSharp, где происходит основная магия — обработка данных и их приведение к единому формату. Тут ИИ помогает с генерацией классов, но всегда стоит сверять каждый шаг. Особенно это важно при работе с JSON данными, передаваемыми через API биржи.

5.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Сгенерированные классы для доменной модели. Мы вручную дополнили их атрибутами и исправили типы данных.

Claude может предложить интересные решения, но нужно добавлять атрибуты, такие как JsonProperty, чтобы корректно обрабатывать данные биржи. Если вы этого не сделаете — готовьтесь к сюрпризам в виде неверных данных в отчётах.

6.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Мы добавили атрибуты JsonProperty для правильной работы с JSON данными.

Обработка торговых данных — ещё один важный этап, где ИИ не всегда справляется самостоятельно. Например, данные сделок и их обработка могут вызывать ошибки.

7.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Claude исправляет код для обработки данных торгов, передаваемых через WebSocket и REST API.

Шаг 5. Оптимизация и новые методы

Claude.ai неплохо справляется с написанием базовых методов, таких как работа со свечами и торговыми данными. Однако его предложения требуют оптимизации. Мы часто выносим логику в отдельные классы для лучшей структуры.

8.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

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

Также приходится дорабатывать методы для работы с торговыми операциями через WebSocket. И хотя ИИ помогает автоматизировать такие процессы, код всё равно требует финальной доводки.

9.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Claude.ai добавил методы для торговых операций в SocketClient, но их пришлось оптимизировать и исправить ошибки.

Шаг 6. Тестирование — код работает не всегда с первой попытки

Когда код готов, самое время его протестировать. Здесь ИИ снова приходит на помощь, но все его предложения нужно тщательно проверять, потому что часто с первого раза всё работает некорректно. Например, при тестировании работы с API биржи мы сталкиваемся с ошибками при запросах инструментов и позиций.

10.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Claude.ai предложил код для работы с REST API Gate.io, но его нужно было тестировать и дорабатывать.

Шаг 7. Конвертация данных для спота и деривативов

Claude.ai помогает с генерацией классов для работы со спотом и деривативами, но опять же — будьте готовы к тому, что нужно будет корректировать методы и типы данных вручную. Например, работа с деривативами на Gate.io требует дополнительных проверок и доработок.

11.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Claude.ai предложил класс Extensions для поддержки конвертации данных между спотом и деривативами на Gate.io.

Мы также адаптируем SpotAdapter для корректной обработки данных биржи, используя методы конвертации, предложенные Claude.

12.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

SpotAdapter был переписан с учетом изменений в HttpClient и SocketClient, используя методы из Extensions.

Шаг 8. Адаптер для фьючерсов и исправления ошибок

Claude.ai помогает с написанием методов для работы с фьючерсами, но, как и прежде, требуется тщательная проверка логики и исправление ошибок. Например, при сборке стакана данных мы столкнулись с проблемой обработки исключений.

13.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Сгенерированный HttpClient для работы с фьючерсами через REST API Gate.io.

Claude также иногда ошибается с обработкой данных в адаптере фьючерсов. Приходится вручную настраивать методы для правильной работы со стаканом.

14.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Исправленный адаптер для фьючерсов с правильной логикой работы со стаканом.

В результате после исправлений ИИ предложил оптимизированный метод для работы с ордербуками и восстановления данных.

15.png

Как мы с помощью ИИ пишем коннекторы к криптобиржам

Оптимизация методов для восстановления и работы со стаканом данных на основе предложений Claude.ai.

GitHub Copilot — разрекламированная игрушка или настоящий помощник?

GitHub Copilot, который Microsoft и GitHub активно продвигают как инструмент будущего, на самом деле в своём текущем виде является скорее интересной игрушкой, нежели полноценным помощником программиста. Copilot помогает писать нужные участки кода, но по-настоящему выдающихся результатов от него ждать не стоит — его сила в доработке и предложениях по улучшению кода. Однако его главный плюс — это тесная интеграция со средой разработки, что делает его удобным для быстрых правок и завершения шаблонного кода, с чем он справляется гораздо лучше, чем написание сложных логических модулей.

copilot.gif

Как мы с помощью ИИ пишем коннекторы к криптобиржам

ИИ: усилитель возможностей для профессионалов и преграда для новичков

Если вы начинающий разработчик и только погружаетесь в мир программирования, то вам, мягко говоря, не повезло. На текущий момент ИИ никак не повысит вашу эффективность. Более того, доверяя ИИ в сложных задачах, вы можете ещё больше запутаться в коде и проблемах, которые он генерирует. Совсем другое дело — опытные программисты.

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

Однако, как мы уже упоминали, ИИ бьёт по самому слабому месту — начинающим разработчикам, делая разрыв между ними и профессионалами ещё большим. Опытные программисты могут быстро выявить ошибки ИИ, исправить их и продолжить работу, тогда как новичок просто утонет в этих проблемах. Иронично, что в то время, когда ИИ задумывался как помощь для всех, он пока лишь увеличивает этот разрыв.

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

Начать дискуссию