Как организовать биржевую торговлю и разработку торговых алгоритмов на платформе 1С

Программист 1С v8.3 (Управляемые формы) Управленческий учет Финансы и профессиональные услуги
← На главную

Разработка систем для биржевой торговли на базе 1С — это сложная техническая задача, требующая интеграции платформы с внешними терминалами (QUIK), базами данных и математическими библиотеками. Рассмотрим подробно, как спроектировать архитектуру такой системы, организовать хранение данных и реализовать автоматическое принятие решений.

Архитектура интеграции 1С с терминалом QUIK

Для организации обмена данными между 1С и биржевым терминалом QUIK эффективнее всего использовать связку ODBC и файлового обмена. Разберем основные принципы:

Структура хранения биржевых данных в базе 1С

Проанализируем оптимальную структуру метаданных для хранения истории цен и параметров инструментов. Неэффективно хранить все данные в одном справочнике, так как параметры торгов постоянно меняются. Рекомендуется следующее разделение:

  1. Справочник БиржевыеИнструменты: содержит условно-постоянную информацию (код тикера, кратность лота, принадлежность к рынку).
  2. Регистры сведений: используются для хранения динамических цен (Last, Bid, Ask). Разделение на два регистра позволяет оптимизировать скорость записи и чтения.
  3. Регистр накопления: предназначен для хранения информации об объемах торгов и остатках активов в портфеле.

Пример логики запроса для отбора растущих активов:


ВЫБРАТЬ
    Цены.Инструмент КАК Инструмент
ИЗ
    РегистрСведений.ИсторияЦен.СрезПоследних(&Дата1, ) КАК Цены
ГДЕ
    Цены.ЦенаЗакрытия > (ВЫБРАТЬ Цена ИЗ РегистрСведений.ИсторияЦен.СрезПоследних(&Дата2, ) ГДЕ Инструмент = Цены.Инструмент)

Реализация торговых стратегий и выставление заявок

Выясним, как автоматизировать процесс торговли. Вместо использования сложных встроенных функций QUIK, логику принятия решений лучше перенести в 1С, используя язык запросов и программный код.

Многоуровневая система стратегий:

Для отправки команд в QUIK используется формирование текстового файла транзакций, который терминал считывает автоматически. Рассмотрим пример структуры обработки команды:


Процедура ВыставитьЗаявку(Инструмент, Цена, Количество, Направление)
    ТекстЗаявки = "ACTION=NEW_ORDER; CLASSCODE=" + Инструмент.Класс + "; SECCODE=" + Инструмент.Код + "; OPERATION=" + Направление + "; PRICE=" + Цена + "; QUANTITY=" + Количество;
    // Запись в файл обмена для QUIK
КонецПроцедуры

Интеграция с Python для технического анализа

Посмотрим на возможности расширения аналитики. Поскольку встроенные средства 1С ограничены в математических вычислениях, целесообразно использовать Python через запуск внешних скриптов. Это позволяет подключать специализированные библиотеки:

Проанализируем процесс: 1С выгружает накопленную историю цен в CSV, запускает Python-скрипт, который рассчитывает значения индикаторов и возвращает результат обратно в 1С для принятия финального решения торговым роботом.

Учет и корректировка по отчетам брокера

Важным этапом является синхронизация данных 1С с реальными операциями. Рассмотрим подробнее механизм корректировки:

В момент совершения сделки 1С фиксирует примерную цену и комиссию по константе. На следующий день необходимо загрузить официальный отчет брокера (в формате Excel или XML). Специальная обработка должна распознать фактические комиссии, налоги и точные цены исполнения, корректируя документы ПокупкаИнструментов и ПродажаИнструментов. Это гарантирует, что управленческий баланс инвестора в 1С будет на 100% совпадать с реальным состоянием брокерского счета.

← На главную