Ваши пожелания зарегистрированы, мы постараемся их рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.
Действительно, в настоящее время в терминале QUIK и в сервере QUIK метод формирования дневных свечей в случаях, когда торги начинаются в одну календарную дату, а заканчиваются уже в другую, отличается. Мы приведем их в соответствие друг другу в одной из очередных версий ПО.
Юрий Волошин написал: Как получить в Lua QUIK 8.13 значения полей "% активов" из таблицы "Состояние счета"?
Рассчитать долю стоимости позиции по активу в общей стоимости активов, без учета денег. С подробным описанием полей Рабочего места QUIK и как рассчитываются их значения можно ознакомиться в руководстве пользователя либо же в справке в самом рабочем месте, раздел 3.
Для работы терминала версии 9.1 и выше, необходимо, чтобы у брокера была версия сервера 9.0.0 и выше.
Зарегистрировали пожелание, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Штатного функционала для выполнения подобных задач не предусмотрено. Как вариант, Вы можете при помощи собственного скрипта, написанного на Lua, получать данные из терминала и отправлять их куда Вам нужно.
Владимир написал: Мне нужно узнать, сколько у меня лотов (ну или акций) по каждой позиции, которая есть в портфеле
Функция getDepo, поле depo_current_balance
б) Изначально нам показалось, что вопрос был в реалиях рабочего места QUIK, это не так? Что, как, в каком количестве и где хранится в интернете - это вопрос к интернету.
Цитата
Владимир написал: А к ТТТ они имеют самое прямое отношение: перечень тикеров, интересующих юзера, настраивается именно в ТТТ, а Квик всё время ведёт весьма интенсивный обмен данными с сервером. И что, трудно заодно и свечки прихватить?
Прихватить что и откуда? ТТТ транслируется биржей, свечки строит терминал из обезличенных сделок.
Цитата
Владимир написал: А что, ваш CreateDataSource тоже получает свечи, сгенерённые терминалом на основании потока обезличенных сделок"?
Все верно.
Цитата
Владимир написал: о более тяжёлые (а лучше и менее, начиная с M15 и кончая месячными) лучше получать непосредственно от биржи
Биржа не рассылает свечи, биржа рассылает обезличенные сделки.
Дополним касательно пункта б): При желании/необходимости, Вы также можете самостоятельно создавать свечи из потока обезличенных сделок в своем скрипте.
а) При помощи функций getMoney, getDepo и getPortfolioInfo
б) Никак. Свечи текущей торговой сессии генерируются терминалом на основании потока обезличенных сделок (исторические данные же поступают в терминал с сервера в виде архивов), к потоку текущих параметров (таблица текущих торгов) они не имеют никакого отношения.
Как верно заметил BlaZed, при закрытом графике CreateDataSource требуется некоторое время на загрузку данных. Если с учетом данного момента проблема все равно сохраняется, пришлите, пожалуйста, пример своего кода для анализа.
Отдельно заметим, что терминал орудует именно биржевыми транзакциями. Собирать собственный вариант транзакции, чтобы потом разбить его на сервере и по отдельности отправить на биржу точно также приведет хоть и к небольшим, но задержкам.
Андрей написал: Эмулировать - значит дать пользователю 1 вызов API, а в нем инкапсулировать KILL_ORDER и NEW_ORDER, с правильной и оптимальной реализацией ожидания между ними.
Для чего? Пока сервером не будет получен ответ от биржи о том, что заявка была успешно снята, транзакция на выставление новой заявки не пройдет контроль достаточности средств на сервере.
Цитата
Андрей написал: Вот у меня вопрос - как в точности реализовано перемещение ордера мышкой в стакане?
Точно так же. Отправка KILL_ORDER, ожидание ответа от биржи, проверка NEW_ORDER на сервере, отправка NEW_ORDER на биржу. Такую же логику Вы можете реализовать и в собственном скрипте.
Повторимся, пауза между KILL_ORDER и NEW_ORDER (помимо минимальных сетевых задержек) обусловлена ожиданием ответа от биржи, исключить этот момент нельзя.
Давайте попробуем изложить свой ответ подробнее. В биржевом интерфейсе для фондового рынка нет транзакции MOVE_ORDERS. Соответственно, заменить заявку на бирже каким-либо иным образом, кроме как снять ее и затем выставить снова - невозможно. Что конкретно и на каком этапе Вы предлагаете "эмулировать", если биржевым интерфейсом поддерживаются только KILL_ORDER и NEW_ORDER? Если Вы хотели бы видеть транзакцию для замены заявки, рекомендуем обратиться с подобным пожеланием на биржу.
Что касается "пропуска" проверок, то здесь вынуждены снова повториться: Поскольку контроль достаточности Ваших средств (как клиента) выполняется брокером (средствами сервера QUIK), биржа не в курсе, сколько именно Вам доступно средств. Лимиты же обновляются только после получения ответа от биржи (о том, что заявка успешно снята/выставлена или же получена ошибка) и это единственный правильный вариант. Вы можете попробовать обратиться к своему брокеру с просьбой не контролировать Ваши позиции и сразу отравлять транзакции на биржу, однако, предполагаем, что его ответ будет достаточно очевидным.
В текущей реализации такой возможности нет. При необходимости, Вы можете реализовать подобный индикатор с объединением фракталов линией самостоятельно, при помощи QLua.
Контроль достаточности средств клиента на Фондовом рынке МБ осуществляется сервером QUIK, а не биржей. Разумеется, пока одна из транзакций пройдет проверку на сервере, будет отправлена на биржу, с биржи вернется соответствующий ответ и исходя из него будут изменены Ваши позиции, пройдет какое-то время (исчисляемое в миллисекундах).
Максимально сократить это время - является одной из наших основных задач. Однако, по понятным причинам, реализовать описанное вами невозможно.
В случае, если мы не совсем правильно Вас поняли, просьба подробнее описать, что имелось в виду под
Цитата
Андрей написал: Либо надо уметь его отключать и пусть все идет на биржу, а там уже получать отказ, если дейтсвительно снятие не отработало.. либо при снятии прописывать инфо в пре-фильтр, чтобы он не ждал чего-то, что ждет сейчас
Режим связанных окон между "Таблицей текущих торгов" и "Таблицей заявок" используется именно для фильтрации последней по инструменту. Если Вам необходимо отобразить в таблице заявок все заявки (иными словами, отключить фильтр), нужно отключить режим связанных окон.
Evgen87 написал: Подскажите алгоритм подачи заявки в шорт с фиксированным стоп-лимитом
Описанное Вами можно реализовать при помощи стоп-заявки "по исполнению". Для этого Вам необходимо выставить лимитированную заявку (на покупку / продажу), после чего, кликнув по ней правой кнопкой мыши в таблице заявок, выбрать пункт "Стоп-заявка "по исполнению"" и задать параметры стоп-заявки. Таким образом, после того, как лимитированная заявка будет исполнена, будет выставлена стоп-заявка с указанным Вами типом (например, стоп-лимит).
Если же мы не так поняли, о чем идет речь, просьба описать задачу подробнее.
Опишите, пожалуйста, проблему подробнее (желательно, с примерами). Выполняется ли подключение в тот же день / к тому же серверу? Терминал запускается без ключей?
Ваши пожелания зарегистрированы. Мы постараемся их рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.
spy написал: По поводу состояния счета: возможно ли получить значение текущего депозита БЕЗ учета текущего профита или просадки по инструментам? То есть весь реальный объем депозита, каким бы он был, если бы не было открыто ни одной позиции.
Значение текущего денежного остатка можно получить из таблицы "Позиции по деньгам", обратившись к ней при помощи функции getMoney().
Али написал: Как ни странно, но код клиента указывать ни разу не пришлось. Все ограничивается торговым счетом. При подготовке заявки в ручном режиме - да. Нужно указывать код клиента и номер торгового счета. При этом торговый счет один, а кодов клиента - 2.
Данное поведение может зависеть как от площадки торгов, так и от используемого стороннего ПО. Для того, чтобы однозначно подать заявку по необходимому торговому счету и коду клиента, их следует явным образом указать в транзакции.
Правильно понимаем, что Вам удалось найти торговый счет / код клиента Вашего ИИС?
При подачи транзакции необходимо указать "Код клиента" и "Торговый счет" в реалиях системы QUIK. Ответ на Ваш вопрос можно получить посмотрев в соответствующие поля, например, в таблице "Позиции по инструментам". Либо же задать вопрос поддержке Вашего брокера.
У нас на актуальной версии терминала (9.1.1) описанное поведение не воспроизводится. Контекстное меню открывается. Пришлите, пожалуйста, пример в виде записи экрана.
В текущей реализации возможность получения значения поля "Валюта цены" таблицы "Позиции по инструментам" при помощи Qlua отсутствует. Можем предложить зарегистрировать пожелание на доработку.
Цитата
Сергей написал: И ещё вопрос: правильно ли я понимаю, что "Цена приобретения" в таблице "Позиции по инструментам" - это то же самое, что и "Балансная цена" в таблице "Состояние счёта"?
К сожалению, при переходе по предоставленной ссылке получаем сообщение от сервера об отсутствии доступа к директории. Просьба предоставить корректную ссылку или уточнить, что имеется в виду под "активной" работой с метками. О каком количестве меток идет речь?
swerg написал: 1. В документацию включить список функций, которые нельзя вызывать из OnStop() по каким-либо причинам, как нарушающие корректность выполнения программ Lua или работу терминала. 2. После этого у вас будет список функций с ограничением по функционалу. Очевидно, далее следует работать над уменьшением размера этого списка, т.е. надо добавлением возможности всё же вызывать функции из этого списка из OnStop() (c постепенным удалением таковых функций из данного неприятного списка).
Просьба уточнить, о каких конкретно функциях, вызываемых из OnStop(), идет речь? Быть может, мы не так поняли, но речь вроде бы шла про блокировку основного потока функцией OnStop() (как и описано в документации).
Пришлите, пожалуйста, пример описанного поведения (с описанной ошибкой и количеством свободной на момент получения видеопамяти) и скрипт на котором оно воспроизводится. Какая версия терминала Вами используется?
Ваше пожелание зарегистрировано, мы постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Уточните, пожалуйста, о чем конкретно идет речь? Как было отвечено в теме ранее, заголовок по умолчанию соответствует полному/короткому коду инструмента в зависимости от настроек на стороне брокера.
Андрей написал: Это новость про либо обе, либо ни одна. Об этом хорошо бы написать в документации.
Это уже указано в документации к биржевому протоколу. Так как результат возвращает биржа и, соответственно, он в любой момент может поменяться, мы не считаем правильным фиксировать его в нашей документации.
Цитата
Андрей написал: На момент onTransReply нет еще onOrder и записи в заявках
Если в OnTransReply вернулся номер заявки(ок), это значит, что новая заявка была зарегистрирована, что приведет к срабатыванию OnOrder и появлению соответствующей записи в таблице заявок. Зарегистрировали пожелание на добавление полей price, quantity и order_num для второй заявки. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО. Касательно направления на данной транзакции, с данным пожеланием рекомендуем обратиться на биржу.
Цитата
Андрей написал: Еще вопрос. Чем обусловлено наличие MODE=0 и MODE=1? Неужели неизменность количества позволяет как-то по особому, заметно эффективнее и т.п. релизовать? Настолько, что даже выделили отдельный режим, а не в рамках частного случая с заданием кол-в MODE=1.
Данный вопрос также следует адресовать специалистам биржи.
1) Обе заявки успешно изменены, либо не изменена ни одна, либо ошибка. Это уже можно понять по реплаю.
2) sec_code не может отличаться у двух данных заявок. Регистрируем пожелание на возможность получения price, quantity и order_num второй заявки?
3) Мы не добавляем в транзакцию поля, которые отсутствуют в биржевом интерфейсе. Так как для данной транзакции в принципе отсутствует направление, добавить его в реплай возможности нет. Сама задача в принципе не ясна. Данной транзакцией нельзя изменить направление заявки. Зачем необходимо его получать в onTransReply?
На данный момент, рекомендуем получать номер второй заявки из поля result_msg. Всю прочую информацию же можно получить из таблицы заявок по данному номеру.
Если есть такая возможность, просьба прислать архив терминала с включенным "умным" заказом данных, это может помочь в анализе проблемы. Включите умный заказ, закройте терминал сохранив изменения, заархивируйте всю папку с ним (исключая ключи доступа) и направьте нам на почту (quiksupport@arqatech.com). Просьба в письме сослаться на данную тему форума.
Как уже было сказано ранее, такова реализация работы OnStop() на текущий момент, это не является ошибкой. Просьба более подробно описать, как Вы хотели бы видеть логику работы функции в данном месте. Готовы зарегистрировать пожелание на доработку.
СергейК написал: Я сделал шот списка классов до включения умного заказа и после. Сравнить вы можете на прилагаемой картинке. Появились отметки на многих классах, к-е мне совсем не нужны. Среди изменений не только классы, но и фильтры. У многих классов до этого была галочка на сером фоне, т.к. был фильтр, а теперь фильтра нет, т.е. будет грузиться инфа не по 10 (грубо говоря) инструментам, к-е я выбрал, а по всем, а их там сотни (а на SPB: Акции - 1525). Фильтры параметров не слетают, уже хорошо.
Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Ваше пожелание зарегистрировано, мы постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Андрей написал: 1) Признак направления заявки есть в самой заявке и он не меняется. Ничто не мешает для унификации его проставлять во flags так же, как для других транзакций. Чтобы в реплае понимать, реплай это на покупку или на продажу. Польза этого сомнений не вызывает, стоимость реализации низкая.
Речь идет про транзакцию, а не про заявку. Повторимся, на биржевойтранзакцииMOVE_ORDERS нет поля "Направление". Направление не уходит в транзакции и не возвращается биржей.
Цитата
Андрей написал: В торговую систему отправляются две новые заявки
Транзакции и заявки это две совершенно разные вещи. В данном случае, транзакция одна, а заявки две, все верно.
Цитата
Андрей написал: Что же тогда считается успешной одной транзакцией, если успех принятия заявок может быть различным?
Если указан номер одной заявки и эта заявка была успешно заменена, либо, если указаны номера двух заявок и обе заявки были успешно заменены. В иных случаях будет ошибка.
Цитата
Андрей написал: Мое предложение - отправлять 2 реплая, с еще одним битом во флаге с указанием на какую заявку из двух каждый. Обоснуйте, почему это не будет улучшением.
Можем предложить зарегистрировать пожелание на возможность получения в OnTransReply номеров обеих заявок. Такой возможности на данный момент действительно нет.