/QuikSocketTransfer

Lua сервер для терминала Quik. Нужен для того чтобы передавать данные из Quik через сокеты.

Primary LanguageLua

QuikSocketTransfer

Lua сервер для терминала Quik. Нужен для того чтобы передавать данные из Quik через сокеты.

Данные передаются в формате json.

Установка

Файлы из архива ToQuikFolder.zip закинуть в папку с Quik

Папку QuikSocketTransfer закинуть в папку с Quik

Запустить файл main.lua

Настройки

config.lua

config = {
    address = "localhost", -- Адрес сервера
    port = 1111, -- Порт сервера
    security = "1", -- Секретный ключ, для установки соединения.
    send_delimitter = "message:", -- разделитель сообщений
}

Пример запроса и ответа

Запрос

message:{"id": 1, "method": "checkSecurity", "args": ["1"]}

Ответ

message:{"id": 1, "result": [true]}

Может возникнуть такая ситуация, когда в ответе будут два сообщения. Поэтому строку ответа нужно разбивать на массив через разделитель "message:"

Установка соединения

Проверка security ключа

Запрос

{
  "id": 1,
  "method": "checkSecurity",
  "args": ["1"]
}

Ответ

{
  "id": 1,
  "result": [true]
}

Вызов методов Quik

Запрос isConnected

{
  "id": 2,
  "method": "isConnected",
  "args": [] // Список аргументов метода
}

Ответ

{
  "id": 2,
  "result": [1]
}

Запрос getInfoParam

{
  "id": 3,
  "method": "getInfoParam",
  "args": ["VERSION"] // Список аргументов метода
}

Ответ

{
  "id": 3,
  "result": ["7.18.1.20"]
}

Функции обратного вызова

После проверки security ключа сервер отправляет вам данные переданные в функции обратного вызова.

Ответ OnQuote

{
  "id": "callback",
  "result": {
    "class_code": "SPBFUT",
    "sec_code": "SiU8"
  },
   "callback_name": "OnQuote"
}

Ответ OnFuturesLimitChange

{
  "id": "callback", 
  "result": {
    "cbplused": 5684, 
    "cbp_prev_limit": 300000, 
    "varmargin": 0, 
    "options_premium": 0, 
    "limit_type": 0, 
    "firmid": "SPBFUT000000", 
    "currcode": "SUR", 
    "cbplused_for_orders": 0, 
    "liquidity_coef": 1, 
    "real_varmargin": 0, 
    "cbplused_for_positions": 5684, 
    "accruedint": -0.5, 
    "kgo": 1, 
    "ts_comission": -0.5, 
    "cbplplanned": 294315.5, 
    "trdaccid": "SPBFUT000bb", 
    "cbplimit": 300000
  },
  "callback_name": "OnFuturesLimitChange"
}

Работа с графиками

Создаем data source

Запрос CreateDataSource

{
  "id": 4,
  "method": "CreateDataSource",
  "args": ["SPBFUT", "SiU8", "INTERVAL_TICK"]
}

Ответ

Успешный ответ

{
  "id": 4,
  "result": [1] // В случае успеха возвращается id data source, 
}

Ответ с ошибкой

{
  "id": 4,
  "result": ["SPBFUT1 - unknown class code."]
}

Запрос SetUpdateCallback

{
  "id": 5,
  "method": "SetUpdateCallback",
  "args": [1] // Передаем id data source
}

Ответ

Успешный ответ

{
  "id": 5,
  "result": [true]
}

Ответ с ошибкой

{
  "id": 5,
  "result": [-1] // -1 Возвращается если не удалось найти id data source
}

После того как установлен UpdateCallback сервер будет отправлять вам данные переданные в этот колбэк

Ответ UpdateCallback

{
  "id": "callback",
  "callback_name": "UpdateCallback",
  "result": 8388,
  "ds_id": 1
}

Ответы при ошибке выполнения

Пример ответа при ошибке, если неправильно переданы аргументы метода

Запрос

{
  "id": 6,
  "method": "O",
  "args": []
}

Ответ

{
  "id": 6,
  "error": "[string \"return {O(client_table, )}\"]:1: unexpected symbol near ')'"
}