AI Trading Bot Integration with QUIK QLUA

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Trading Bot Integration with QUIK QLUA
Medium
~3-5 business days
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

Интеграция AI-трейдинг-бота с QUIK QLUA

QUIK — доминирующий терминал для торговли на российских рынках (ММВБ, СПБ Биржа). QLUA — встроенный Lua-скриптовый движок для автоматизации. Для AI-стратегий нужно вынести ML за пределы QUIK.

Архитектуры интеграции

QLUA + Python через TCP/Named Pipe

QLUA-скрипт в QUIK выступает посредником между торговым терминалом и Python AI-моделью:

-- QLUA скрипт: получает данные, отправляет Python, получает сигнал
local socket = require("socket")
local json = require("json")

local client = socket.tcp()
client:connect("127.0.0.1", 5555)

function OnBar(class_code, sec_code, interval, candle)
    if class_code == "TQBR" and sec_code == "SBER" then
        -- Формируем фичи для ML
        local features = {
            open = candle.open,
            high = candle.high,
            low = candle.low,
            close = candle.close,
            volume = candle.volume,
            symbol = sec_code
        }

        -- Отправка Python-серверу
        client:send(json.encode(features) .. "\n")

        -- Получение сигнала
        local signal_str = client:receive("*l")
        local signal = json.decode(signal_str)

        if signal.action == "buy" then
            SendOrder(sec_code, signal.price, signal.quantity, true)
        elseif signal.action == "sell" then
            SendOrder(sec_code, signal.price, signal.quantity, false)
        end
    end
end

function SendOrder(sec_code, price, qty, is_buy)
    local trans = {
        CLASSCODE = "TQBR",
        SECCODE = sec_code,
        OPERATION = is_buy and "B" or "S",
        PRICE = tostring(price),
        QUANTITY = tostring(qty),
        ACCOUNT = "L01-00000F00",
        TYPE = "L",  -- Лимитный ордер
        TRANS_ID = tostring(os.time())
    }
    sendTransaction(trans)
end
# Python AI-сервер
import socket
import json
import numpy as np
from your_ml_model import predict

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 5555))
server.listen(1)

conn, addr = server.accept()

buffer = ""
while True:
    data = conn.recv(4096).decode()
    buffer += data

    if '\n' in buffer:
        line, buffer = buffer.split('\n', 1)
        features = json.loads(line)

        # ML inference
        signal = predict(features)
        conn.send((json.dumps(signal) + '\n').encode())

QUIK Python Library

Сторонние библиотеки для прямой работы с QUIK из Python:

  • quik_py: не официальная, работает через DDE или TRANS2QUIK.dll
  • PyQLUA: QLUA в Python обёртке
  • QuikSharp: .NET библиотека (если C# предпочтительнее)

Trans2Quik DLL

Официальная DLL от QUIK для отправки транзакций:

  • Только отправка ордеров, не получение данных
  • Python через ctypes или cffi
  • Надёжнее для production use

Получение биржевых данных

Финам Data Feed

Для ML обучения: исторические данные через Финам API или экспорт из QUIK.

QLUA Data Tables

-- Получение всех сделок из таблицы
local trades_table = getTable("trades")
local num_rows = #trades_table

-- Подписка на стакан
Subscribe_Level_II_Quotes("TQBR", "SBER")
local order_book = getParamEx2("TQBR", "SBER", "BID")

Специфика российского рынка

T+2 расчёты

Режим T+2 на ММВБ: учёт в AI-стратегиях. Short позиции требуют РЕПО или наличия ценных бумаг.

Брокерские комиссии

Типичные комиссии: 0.035–0.1% от оборота. Для дейтрейдинга — значимо. Брокерский сбор + биржевой сбор + НКД для облигаций.

FORTS (срочный рынок)

Фьючерсы и опционы через FORTS: отдельный класс SPBFUT. Кодировка тикеров (SiM5, RIM5). Часовое гарантийное обеспечение.

Срок интеграции: 2–3 недели для QLUA + Python TCP bridge. Рекомендую начинать с paper trading mode (режим отладки в QUIK без реального исполнения).