Подскажите пожалуйста функцию, для фьючерсов и/иди акций, через которую можно узнать значение максимально возможного количества бумаг которое я могу использовать при открытии сделки? По аналогу в форме заявки Значение MAX.
Спасибо!
QUIK clients support
Сообщений: Регистрация: 27.01.2015
02.04.2018 10:23:36
Добрый день.
Для срочного рынка такой функции нет, вернее в самом QUIK такой информации нет.
QUIK clients support
Сообщений: Регистрация: 27.01.2015
02.04.2018 11:26:03
Дополним. Информация для срочного рынка есть, ее можно посмотреть в таблице "Состояние счета", однако доступа к этом таблице через Qlua нет. Что касается акций, то данную информацию можно получить функцией getBuySellInfo, параметры can_buy_own и can_sell_own.
Пользователь
Сообщений: Регистрация: 09.02.2015
02.04.2018 15:38:09
Жаль, а есть реализация формулы по лимитам в луе?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
02.04.2018 16:05:29
Цитата
Роман написал: Жаль, а есть реализация формулы по лимитам в луе?
Для срочного рынка такой функции нет, вернее в самом QUIK такой информации нет.
Почему же нет? А это что:
CalcBuySell Функция предназначена для расчета максимально возможного количества лотов в заявке. Формат вызова: NUMBER qty, NUMBER comission CalcBuySell(STRING class_code, STRING sec_code, STRING client_code, STRING account, NUMBER price, BOOLEAN is_buy, BOOLEAN is_market)
Пользователь
Сообщений: Регистрация: 27.03.2016
02.04.2018 20:54:52
В списке функций взаимодействия скрипта LUA и Рабочего места QUIK она именуется по другому )
CulcBuySell- функция для расчета максимально возможного количества лотов в заявке
Пользователь
Сообщений: Регистрация: 09.02.2015
03.04.2018 03:30:14
Спасибо, посмотрю!
Она одинаково работает для всех инструментов и площадок?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
03.04.2018 09:19:12
Добрый день.
Ромна, да упустили про функцию CalcBuySel. Ее можете да использовать для своей задачи. Подойдет для любого режима, для срочного рынка в том числе.
Пользователь
Сообщений: Регистрация: 29.04.2015
03.04.2018 12:52:49
Цитата
Борис Гудылин написал: В списке функций взаимодействия скрипта LUA и Рабочего места QUIK она именуется по другому ) CulcBuySell - функция для расчета максимально возможного количества лотов в заявке
Опечатка на странице со списком функций. На странице с описанием CalcBuySell всё правильно.
Ваше обращение получено. Постараемся в ближайшее время дать ответ.
Пользователь
Сообщений: Регистрация: 09.02.2015
03.04.2018 21:23:34
Спасибо, за уточнении! Небольшая ремарка к производителю: CalcBuySell и CalcBuyBuy - расчёт ведётся самой программой (не сервером) и в случае изменения биржей формулы расчёта, нужно обновлять Квик с доработкой этих функций?
Борис Гудылин написал: В списке функций взаимодействия скрипта LUA и Рабочего места QUIK она именуется по другому ) CulcBuySell - функция для расчета максимально возможного количества лотов в заявке
Опечатка на странице со списком функций. На странице с описанием CalcBuySell всё правильно.
Добрый день,
Документация будет исправдена в одной из очередных версий программы.
Документация будет исправдена в одной из очередных версий программы.
Лучше не надо;) Шутку оценил.
Присоединяюсь к пожеланию добавить возможность исправления опечаток, хотя бы в течение суток или часа.
Пользователь
Сообщений: Регистрация: 09.02.2015
05.04.2018 04:42:09
з.ы. так формула вычисляется в самой программе?
И ещё, CalcBuySell : STRING client_code, может иметь значение null?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
05.04.2018 12:08:52
Цитата
Роман написал: з.ы. так формула вычисляется в самой программе?
И ещё, CalcBuySell : STRING client_code, может иметь значение null?
Да. Без client_code вы не получите результат расчета.
Пользователь
Сообщений: Регистрация: 09.02.2015
05.04.2018 22:02:26
>> Да. - Без client_code вы не получите результат расчета. Егор, я правильно вас понял, если client_code будет равен NULL он не рас читает правильно??? Просто, не могу поставить это значение, нужно всю цепочку запросов переписывать ...
Пользователь
Сообщений: Регистрация: 09.02.2015
06.04.2018 01:56:34
если нет, то как можно обойти это. К примеру можно получить client_code имея номер счёта?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
06.04.2018 09:42:46
Цитата
Роман написал: >> Да. - Без client_code вы не получите результат расчета. Егор, я правильно вас понял, если client_code будет равен NULL он не рас читает правильно??? Просто, не могу поставить это значение, нужно всю цепочку запросов переписывать ...
Добрый день.
Это работает для фондового и валютного рынка. Для срочного да, код клиента не обязателен.
Пользователь
Сообщений: Регистрация: 09.02.2015
06.04.2018 18:04:03
local value = tonumber(CalcBuySell(class_code, security, null, account, price, false , false))
выводит: bad argument #1 to 'tonumber' (value expected) :(
в общем с NULL не работает, это глюк? Если нет, то вопрос остался, как по торговому счёту узнать код клиента? (вообще зачем он нужен в этой функции, что номер счёта и код клиента бывают разные).
Пользователь
Сообщений: Регистрация: 09.02.2015
06.04.2018 20:44:12
как не странно вот это сработало: CalcBuySell(class_code, security, account, account, price, false , false)
Пользователь
Сообщений: Регистрация: 09.02.2015
06.04.2018 20:54:36
CalcBuySell(class_code, security, "", account, price, false , false) и так тоже но не NULL
Пользователь
Сообщений: Регистрация: 10.04.2015
06.04.2018 22:02:57
Цитата
Роман написал: local value = tonumber(CalcBuySell(class_code, security, null, account, price, false , false))
выводит: bad argument #1 to 'tonumber' (value expected) :(
Почему вы везде пишите null вместо nil? В Lua, насколько я понимаю, нет такого ключевого слова как null, поэтому это будет интерпретироваться как некая переменная с именем null, которая не определена и соответственно вместо неё будет подставляться значение nil. То-есть, по сути, пока кто-то случайно не определил null со своим значением, такой код будет работать без ошибок и использование null будет равнозначно nil. Но тем не менее, это всё-таки синтаксическая ошибка, и лучше наверно не стоит так писать...
*** По теме... я ещё не разбирался с функцией CalcBuySell, поэтому не знаю что там за параметр client_code ей требуется... у меня поле с таким именем в OnTransReply, OnOrder и OnTrade точно равно полю account, а в вызове sendTransaction оно задаёт комментарий, который возвращается потом полем brokerref... то-есть полная путаница получается...
Подозреваю, что в вызове CalcBuySell параметр с таким же именем client_code должен задавать значение, которое возвращается в поле uid в OnTransReply, OnOrder и OnTrade, это уже пусть тех. поддержка точно скажет...
Тогда, если это так, то может вытащить это значение оттуда из uid? это так на вскидку, не зная структуры вашего кода...
Пользователь
Сообщений: Регистрация: 09.02.2015
07.04.2018 01:27:56
да nil - это я языки попутал! Но не факт с nil такая же ситуация, я поставил так:
и всё работает ... Не знаю правильно или нет, ну это уже слово за разработчиками.
Пользователь
Сообщений: Регистрация: 10.04.2015
07.04.2018 04:23:53
Цитата
Роман написал: CalcBuySell(class_code, security, "", account, price, false , false)
и всё работает ...
работает возможно из-за того, что вы для срочного рынка считаете... а для фондового может уже так не сработает...
Пользователь
Сообщений: Регистрация: 09.02.2015
07.04.2018 23:16:07
ну будем ждать комментарий разработчиков, я не в курсе как метод внутри обрабатывается.
QUIK clients support
Сообщений: Регистрация: 27.01.2015
10.04.2018 05:11:00
Цитата
Роман написал: в общем с NULL не работает, это глюк? Если нет, то вопрос остался, как по торговому счёту узнать код клиента? (вообще зачем он нужен в этой функции, что номер счёта и код клиента бывают разные).
Добрый день.
На фондовом/валютном рынке есть торговый счет и код клиента. Для расчета максимального кол-ва код клиента обязательный. Для срочного рынка код клиента не используется, там только торговый счет.