Вкратце суть в следующем - есть 2 единых счета, подключенных к 1 терминалу Quik, на 1 из которых данный скрипт работает без проблем, на втором нет. Обращался в тех поддержку Финама, там все проверили и т.к. вручную все выставляется из квика был послан к разработчика.
Сам текст скрипта заявки (внутри функции main()):
account_a="L01+00000F00" client_a="285563R2L2B"
function transaction_send_a (Operation_trans, Amount, Name) t = { ["ACTION"]="NEW_ORDER", ["ACCOUNT"]=account_a, ["CLIENT_CODE"]=client_a, ["TYPE"]="M",
Mikhail, Добрый день. Ошибка биржевая. Означает что кода 285563R2L2B нет на бирже. Сервер QUIK пропускает заявку, а биржа нет . За разъяснениями рекомендуем обратиться Вашему брокеру на биржу
Здравствуйте! На счете единой денежной позиции Финам при попытке создать заявку с помощью скрипта на 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
Роман написал: Здравствуйте! На счете единой денежной позиции Финам при попытке создать заявку с помощью скрипта на 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
Добрый день.
Данную ошибку возвращает Московская Биржа, нужно смотреть, что передаётся в транзакции в качестве кода клиента. Попросите Вашего брокера прислать нам Ваш отчёт по транзакциям.
В моем случае вопрос создания заявок решился добавлением символа "/" в конце строки кода клиента, например, "659364H2UR8/". Но это добавило неудобств, т.к. во всех таблицах QUIK (заявки, сделки и т.п.) код клиента без слэша.
Роман написал: В моем случае вопрос создания заявок решился добавлением символа "/" в конце строки кода клиента, например, "659364H2UR8/". Но это добавило неудобств, т.к. во всех таблицах QUIK (заявки, сделки и т.п.) код клиента без слэша.
Добрый день.
Этот вопрос нужно адресовать Вашему брокеру, это его сфера ответственности.