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

Опубликовано в 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() что-то делает в случае ошибки.

Комментарии   

# PASHAsoft 01.11.2013 17:11
Мне кажется это будет полезней
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

Недостаточно прав для комментирования

Архив QLua