Проверка правильности задания торгового счета

Опубликовано в QLua

Нет ничего проще, чем ошибиться в указании торгового счета для робота в настройках. Ошибка выплывает обычно не сразу, а в момент выставления транзакции. Поэтому лучше заранее все проверить.

Упрощенный вариант (для случая единственного счета в терминале):

-- Возвращает таблицу-описание торгового счета по его названию
-- или 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() что-то делает в случае ошибки.

Архив QLua