Добрый день. Брокер Открытие. Торгует робот на споте. Завёл себе ещё один счёт на ММВБ (второй), брокер добавил его в КВИК. Старый робот начал глючить, хотя в нём не вносились никакие изменения. Ошибка Неверный код клиента. Сломал голову. Прошу подсказать что случилось Вот строка отправки заявок: conditions=="LONG"
function sendLimit(class,security,direction,price,volume,account,client_code,comment,execution_condition,expire_date,market_maker)
if string_find(FUT_OPT_CLASSES,class)~=nil then
return sendLimitFO(class,security,direction,price,volume,account,comment,execution_condition,expire_date,market_maker)
else
return sendLimitSpot(class,security,direction,price,volume,account,client_code,comment,market_maker)
end
end
Код
function sendLimitSpot(class,security,direction,price,volume,account,client_code,comment,market_maker)
-- отправка лимитированной заявки
-- все параметры кроме кода клиента и коментария должны быть не нил
-- ВАЖНО! цена должна быть стрингом с количеством знаков после точки для данной бумаги
-- если код клиента нил - подлставляем счет
-- market_maker - признак заявки маркет-мейкера. true\false
-- Данная функция возвращает 2 параметра
-- 1. ID присвоенный транзакции либо nil если транзакция отвергнута на уровне сервера Квик
-- 2. Ответное сообщение сервера Квик либо строку с параметрами транзакции
if (class==nil or security==nil or direction==nil or price==nil or volume==nil or account==nil) then
return nil,"QL.sendLimitSpot(): Can`t send order. Nil parameters."
end
local trans_id=random_max()
local transaction={
["TRANS_ID"]=tostring(trans_id),
["ACTION"]="NEW_ORDER",
["CLASSCODE"]=class,
["SECCODE"]=security,
["OPERATION"]=direction,
["QUANTITY"]=string_format("%d",tostring(volume)),
["PRICE"]=toPrice(security,price,class),
["ACCOUNT"]=tostring(account)
}
if client_code==nil then
transaction.client_code=tostring(account)
else
transaction.client_code=tostring(client_code)
end
if comment~=nil then
transaction.client_code=string_sub(transaction.client_code..'/'..tostring(comment),0,20)
else
transaction.client_code=string_sub(transaction.client_code..'/QL',0,20)
end
if market_maker~=nil and market_maker then
transaction['MARKET_MAKER_ORDER']='YES'
end
local res=sendTransaction(transaction)
if res~="" then
return nil, "QL.sendLimitSpot():"..res
else
return trans_id, "QL.sendLimitSpot(): Limit order sended sucesfully. Class="..class.." Sec="..security.." Dir="..direction.." Price="..price.." Vol="..volume.." Acc="..account.." Trans_id="..trans_id
end
end
Здравствуйте, Если код клиента у Вас один, то в транзакции его указывать не обязательно, сервер сам его подставит. Если у Вас несколько кодов клиента, то требуется в транзакции явно указать какой нужно использовать. Сейчас же у Вас в транзакции вообще отсутствует параметр указывающий какой код клиента использовать. Добавьте в таблицу transaction параметр CLIENT_CODE по аналогии с остальными, в котором укажите нужный код клиента.