Здравствуйте!
На счете единой денежной позиции Финам при попытке создать заявку с помощью скрипта на lua (код ниже) QUIK возвращает сообщение "ОШИБКА: (533) Неверно указан код клиента". Специалисты технической службы брокера утверждают, что с их стороны все работает корректно, т.к. счет открыт не первый год, и причина в скрипте. Со своей стороны вручную без использования скрипта заявки в QUIK создаются. На других счетах единой денежной позиции Финам и счетах других брокеров скрипт заявки успешно создает.
Просьба подсказать, в чём может быть причина возникновения ошибки по этому счету? Спасибо!
Код |
---|
local sec_code = "NVTK" -- код инструмента (по другим ценным бумагам ситуация аналогичная)
local class_code = "TQBR" -- код класса инструмента
local client_code = "..." -- код клиента единой денежной позиции Финам (для выполнения задается реально существующий, троеточие только для форума)
local account = "L01+00000F00" -- торговый счет
local operation = "B" -- операция "B" или "S"
local quantity = 1 -- количество лотов
local price = 1200 -- цена заявки
function main()
message("Результат создания заявки: "..send_order(sec_code, class_code, client_code, account, operation, quantity, price),1)
end
-- Создание trans_id заявки
function get_trans_id()
--------------------- АРГУМЕНТЫ ----------------------
--------------------- ВОЗВРАЩАЕТ ---------------------
-- (number) trans_id
local s = tostring(os.clock())
local x,g = string.find(s, "(%d+)")
s = string.sub(s, g+2)
for i = 1, 3-string.len(s) do
s = "0"..s
end
return tonumber(os.date("%H%M%S")..s)
end
-- Создание заявки по инструменту
function send_order(sec_code, class_code, client_code, account, operation, quantity, price)
--------------------- АРГУМЕНТЫ ----------------------
-- (string) sec_code - код инструмента
-- (string) class_code - код класса инструмента
-- (string) client_code - код клиента (торговый счет на срочном рынке)
-- (string) account - торговый счет
-- (string) operation - операция "B" или "S"
-- (number) quantity - количество лотов
-- (number) price - цена заявки
--------------------- ВОЗВРАЩАЕТ ---------------------
-- (string) trans_id транзакции создания заявки, иначе причина отказа
-- trans_id заявки
local trans_id = tostring(get_trans_id())
-- Транзакции заявки
local trans_params = {
["ACTION"] = "NEW_ORDER",
["TYPE"] = "L",
["TRANS_ID"] = trans_id,
["SECCODE"] = tostring(sec_code),
["CLASSCODE"] = tostring(class_code),
["CLIENT_CODE"] = tostring(client_code),
["ACCOUNT"] = tostring(account),
["OPERATION"] = tostring(operation),
["QUANTITY"] = tostring(quantity),
["PRICE"] = tostring(price)
}
-- Результат обработки транзакции
local res = sendTransaction(trans_params)
return res == "" and ("заявка с trans_id ["..trans_id.."] создана") or res
end |