В свою очередь, в сигнатуре этих функций присутствуют параметры
Код
STRING firm_id
STRING trdaccid
которые можно получить из функции getItem("trade_accounts", idx). При этом последовательность выведенных кодов клиентов из getItem("client_codes", idx) не соответствует результатам из getItem("trade_accounts", idx). Например для код под индексом 1 соответствует аккаунт под индексом 4.
Вопрос: как получить код клиента, соответствующий торговому аккаунту.
QApplication написал: Вопрос: как получить код клиента, соответствующий торговому аккаунту.
Для одного кода клиента может быть несколько торговых счетов. Какой считать правильным? Однозначного ответа нет. По этой причине нет однозначной связи между trade_account и client_code. Вы можете по таблице depo_limits подобать нужный Вам счет.
Sergey Gorokhov написал: нет однозначной связи между trade_account и client_code
На сколько я понимаю, у разных аккаунтов могут быть одинаковые Идентификаторы фирмfirmid? Можно привести физическое назначение поля firmid. Что такое фирма во взаимоотношениях клиент-брокер-биржа.
QApplication написал: На сколько я понимаю, у разных аккаунтов могут быть одинаковые Идентификаторы фирм firmid?
Да могут.
Цитата
QApplication написал: Можно привести физическое назначение поля firmid.
Внутри QUIK, фирма это некое объединение (группа) счетов. У брокера может быть несколько фирм.
Цитата
QApplication написал: Что такое фирма во взаимоотношениях клиент-брокер-биржа.
Для пользователя это просто некий идентификатор. Для брокера это раздел к которому принадлежат счета. Для биржи (если говорить про фондовый рынок), это некий Уникальный идентификатор участника торгов. Если говорить про срочный рынок, то это рездел, при чем для одной фирмы в QUIK может быть несколько разделов на бирже.
Общий вопрос, из которого родился перовоначальный: Какими функциями QLUA и в каком порядке можно построить структуру данных о клиентских счетах и др. в виде дерева? например, userID--- | --- account 1 | --- money | --- T0 | --- T1 | --- T2 | --- depo (T0, T1, T2) | --- portfolioInfo(T0, T1, T2) | --- account 2 ... | --- account n
Если с функциями (money, depo , portfolioInfo) все понятно, то как посторить корень дерева - не понятно?
например, userID получаем из STRING getInfoParam (STRING param_name) с аргументов USERID client_codesполучаем из getItem(client_codes) список аккаунтов по каждому коду клиента получаем ??? (не понятно как) далее по каждому коду клиента (client_codes) и для каждого аккаунта, соответствующего этому коду клиента, получаем данные по известным функциям (get<Name>Ex(args...)).
QApplication написал: Предлагаю добавить функцию в QLUA для получения списка аккаунтов по коду клиента.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
QApplication написал: Какими функциями QLUA и в каком порядке можно построить структуру данных о клиентских счетах и др. в виде дерева?
Уже сейчас вам всё это доступно: надо просто проитерировать все лимиты по бумагам и по деньгам И из них выстроить требуемую вам структуру. (Зачем она вам нудна - вот что не понять)
Собственно QUIK в каком-то смысле так и делает: есть лимиты - из них достаётся вся информация. И всё. Никакой "структуры параметров" нет.
Освежу темку. 1. Если фирма для брокера это группа счетов, то зачем в вызовах getDepoEx, getMoneyEx, getFuturesLimit, ... кроме номера счета указывать еще и фирму? Кажется, эта информация избыточна. 2. Практически всегда, номер счета фондового рынка МБ имеет код "L01~00000F00", получается это не счет клиента, и даже не брокера, а .... счет чего?
Сергей написал: Освежу темку. 1. Если фирма для брокера это группа счетов, то зачем в вызовах getDepoEx, getMoneyEx, getFuturesLimit, ... кроме номера счета указывать еще и фирму? Кажется, эта информация избыточна. 2. Практически всегда, номер счета фондового рынка МБ имеет код "L01~00000F00", получается это не счет клиента, и даже не брокера, а .... счет чего?
на бирже торгуют фирмы(брокеры) а не их клиенты поэтому информация о фирме нужна бирже. кроме того в сделке на бирже есть и идентификатор клиента, но идентификатор клиента(счет) нужен реально лишь брокеру для разнесения сделок по клиентам во внутренней "амбарной книге"
Сергей написал: Освежу темку. 1. Если фирма для брокера это группа счетов, то зачем в вызовах getDepoEx, getMoneyEx, getFuturesLimit, ... кроме номера счета указывать еще и фирму? Кажется, эта информация избыточна. 2. Практически всегда, номер счета фондового рынка МБ имеет код "L01~00000F00", получается это не счет клиента, и даже не брокера, а .... счет чего?
на бирже торгуют фирмы(брокеры) а не их клиенты поэтому информация о фирме нужна бирже. кроме того в сделке на бирже есть и идентификатор клиента, но идентификатор клиента(счет) нужен реально лишь брокеру для разнесения сделок по клиентам во внутренней "амбарной книге"
Информацию о фирме легко получить по номеру счета, судя по тому, что в таблице счетов есть поле с ид фирмы, сопоставление там однозначное.
Незнайка написал: Торговому счету соответствует только ОДИН идентификатор фирмы или может быть НЕСКОЛЬКО ФИРМ для одного торгового счета
В связи с чем возник данный вопрос? Технически может, но таких случаев в бою мы не встречали. Возможно и существует такая конфигурация, но надо у брокера выяснять и смотреть его настройки.
Будет ли корректно работать функция получения фьючерсных позиций без указания фирмы?
Код
function getFuturesHoldingEx(ACCOUNT, SEC_CODE, TYPE)
if TYPE == nil then TYPE = 0 end
local n = getNumberOf("futures_client_holding")
if n == 0 then return nil end
local index = SearchItems("futures_client_holding", 0, n-1, function (trdaccid, sec_code, type)
if sec_code == SEC_CODE and trdaccid == ACCOUNT and type == TYPE then
return nil
else return false end
end, "trdaccid,sec_code,type")
if index then
return getItem("futures_client_holding", index[1])
else return nil end
end
Прошу прощения, не совсем правильно Вас понял. Вы просто реализовали поиск при помощи SearchItems.
В виду данного нами ранее ответа
Цитата
Egor Zaytsev написал: Технически может, но таких случаев в бою мы не встречали. Возможно и существует такая конфигурация, но надо у брокера выяснять и смотреть его настройки.
Однозначно сказать нельзя.
Однако, если взять частный случай, когда набор trdaccid, sec_code, type уникален только для одной конкретной фирмы, то да, Ваша функция будет работать корректно.
Roman Azarov написал: В виду данного нами ранее ответа
Цитата
Egor Zaytsev написал: Технически может, но таких случаев в бою мы не встречали. Возможно и существует такая конфигурация, но надо у брокера выяснять и смотреть его настройки.
Однозначно сказать нельзя.
Другими словами в квике в общем случае нет однозначного соответствия торговый счет -> фирма? Но в форме ввода заявки нет идентификатора фирмы. Как же квик определяет, по какой фирме совершать сделку?