Проверка правильности задания торгового счета
Нет ничего проще, чем ошибиться в указании торгового счета для робота в настройках. Ошибка выплывает обычно не сразу, а в момент выставления транзакции. Поэтому лучше заранее все проверить.
Упрощенный вариант (для случая единственного счета в терминале):
-- Возвращает таблицу-описание торгового счета по его названию
-- или nil, если торговый счет не обнаружен function search_account(account)
local index_table = SearchItems("trade_accounts",0,getNumberOf("trade_accounts")-1,function(trdaccid) return trdaccid == account end ,"trdaccid")
if index_table then
return getItem("trade_accounts",index_table[1])
end
end
А вот так может выглядеть сама проверка:
-- Проверяем соотношение ACCOUNT и CLASSCODE
local account_description = search_account(account)
if account_description == nil then
_error("Торговый счет " .. account .. " не обнаружен")
elsif inlist(account_description.class_codes,classcode,"|") == nil then
_error("Торговый счет " .. account .. " не позволяет торговать инструментом " .. seccode .. "/" .. classcode)
end
Функция inlist() проверяет наличие класса в строке-списке. Функция _error() что-то делает в случае ошибки.
Комментарии
trdaccid=getTradeAccount (class_code)
function getTradeAccount (class_code)
-- Функция возвращает таблицу с описанием торгового счета для запрашиваемого кода класса
for i=0,getNumberOf ("trade_account s")-1 do
local trade_account=g etItem("trade_a ccounts",i)
if string_find(tra de_account.clas s_codes,class_c ode,1,1) then return trade_account end
end
return nil
end
отсюда forum.qlua.org/post1305.html#p1305
RSS лента комментариев этой записи