Старатель написал: Если задана SetTableNotificationCallback (как для ячеек так и для заголовков) по событиям QTABLE_RBUTTONDOWN, QTABLE_RBUTTONDBLCLK, QTABLE_RBUTTONUP, то контекстное меню, в том виде, в котором сейчас есть (не настраиваемое) не нужно!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
1) В начале вызывается TRANS2QUIK_SUBSCRIBE_ORDERS в котором Вы указываете Код класса, для которого будут заказаны заявки и Список кодов инструментов 2) Потом вызываете TRANS2QUIK_START_ORDERS в котором Вы указываете имя функции которая будет срабатывать при получении заявок, описание функции см. в TRANS2QUIK_ORDER_STATUS_CALLBACK 3) И далее смотреть что приедет в этой функции из п.2
Судя по приведенным частям кода все описанное есть.
Если заявок нет, то и в колбеке Вы ничего не увидите. Следовательно вопрос, заявки есть? откройте в терминале QUIK таблицу заявок и посмотрите. Если есть, значит в коде что то выполнено не верно. на нашем примере из "SAMPLE_C#\test_x64.exe" проблема не воспроизводится. Проверьте поступление заявок на нем.
GrigoriyA написал: Подскажите, пожалуйста, процесс получения статуса по отправленной асинхронной заявке.
Вы отправляете транзакцию через функцию А ответ на транзакцию ищите не в результате работы функции, а в отдельном колбеке. В общем то всё.
Цитата
GrigoriyA написал: Тот пример что предлагают скачать здесь, отправляет асинхронную заявку , но не получает ответ по ней.
Не воспроизводится. От слова совсем. Все прекрасно работает. Смотрим наш пример SAMPLE_C++ если речь про параллельную тему "Объяснение процесса обратного получения заявок" которую Вы создали, то ответ по ней будет там.
_sk_ написал: С этим не поспоришь. Только лучше бы знать, к чему нам готовиться. Время то уже тикает, до 16 декабря не так уж много времени осталось. Хотя бы спецификации уже есть? Номера будут строками приходить, раз они в Lua NUMBER не укладываются? Или будет обновление Lua до 5.3, где есть поддержка long на 64-бита?
К сожалению мы не имеем права разглашать информацию до официального релиза.
s_mike@rambler.ru написал: А (правильный) вариант исправления/добавления терминала уже не рассматривается в принципе? Базовая потребность - и только костылями?
Если речь о том чтобы зарегистрировать пожелание, тогда Вы должны его озвучить (пожелание)
s_mike@rambler.ru, Михаил, Можно запоминать состояние stopped во внешнем хранилище. Или добавить проверку на что то еще, например подключение к серверу.
Александр Кашников написал: Лирика: ваша FixTime (V) избыточна применительно к проверкам такого рода совместно с GetInfoParam( "SERVERTIME" ). Просто убрать два двоеточия гораздо быстрее, а смысл тот же.
Ваше право.
Цитата
Александр Кашников написал: Откуда берет значение getInfoParam("SERVERTIME")?
С пакета данных который прислал сервер QUIK. Кроме того есть еще локальный счетчик который накручивает время при отсутствии свежих данных.
Цитата
Александр Кашников написал: Через какое МИНИМАЛЬНОЕ время после соединения с вашим сервером ГАРАНТИРОВАННО можно понять, что данные получаемые с сервера корректны (время ПК +- пару секунд +- часовой пояс), а не далекое прошлое, как в примере выше?
такой константы не существует, всегда есть куча переменных в зависимости от которых время может быть разным.
Роман написал: Добрый день! Подскажите, как получить из Позиций по клиентским счетам код класса через getItem("FUTURES_CLIENT_HOLDING",i) -- SPBOPT (другими словами отделить опционы от фьючерсов) и можно ли каким-то образом получить там же код базового актива для опционов ( или базовый актив только через getParamEx?). Хочу сделать индикатор вариационной маржи по опционным позициям, когда таковые есть, на графике базового актива.
В FUTURES_CLIENT_HOLDING нет кода класса, Вы можете в этом убедиться просто открыв таблицу в терминале. Отделить опционы можно по коду инструмента т.к. коды фьючерсов явно отличаются от опционов. Этого достаточно чтобы узнать все остальные параметры инструмента, например через getSecurityInfo
таблица торгов обновляется раз в период, по таймауту. таблица обезличенных сделок обновляется по мере поступления данных. По этому в таблице обезличенных сделок данные более актуальные чем в таблице текущих торгов.
Роман написал: Всё в одном месте и без задержек данных.
Это не правда. Доска опционов, это банальный калькулятор, который просто что то считает и отображает данные из других таблиц. Логично что таблица из которой доска берет данные куда лучше чем сама доска.
Цитата
Роман написал: Или же в расширениях сделайте Окно графиков открытого интереса наподобие окна графиков волатильности (только в виде гистограмм (по Х - страйки, по Y-количество, рядом две гистограмки на страйке (колы и путы)) в разделе стратегия. Или же можно в виде линии (как улыбка волатильности) - несколько линий разных цветов (разные даты экспирации по одному базовому активу. Выбираем актив FUT - и получаем на одной диаграмме все открытые интересы по всем страйкам и датам экспирации, например.
График открытого интереса Вы можете построить уже сейчас, по данным из таблицы текущих торгов. Вам же, на сколько становится понятно хочется видеть график по данным из таблицы обезличенных сделок. Через LUA Вы можете построить его уже сейчас используя LUA индикаторы. в all_trades это параметр open_interest см документацию.
Другой момент в том что штатными средствами терминала QUIK построить график открытого интереса по таблице обезличенных сделок нельзя. И на это мы можем зарегистрировать пожелание.
Константин Рейм написал: А можно по фьючерсу акцию определить?
также по параметру OPTIONBASE
Цитата
Константин Рейм написал: Робот запоминает свое место в пространстве монитора, а вкладку на которой он открыт может запомнить, чтобы при отключении терминала бот открывал таблицу на той вкладке где был запущен первоначально?
Виталий, У Вас в коде в цикле "for i=1,#index do" снимаются все активные стопы. Видимо функция ProfitControl вызывается несколько раз, от этого предыдущий стоп и снимается. либо не запускайте функцию по нескольку раз, либо предусмотрите в указанном цикле условия при которых стоп не должен сниматься.
Сергей написал: Функция TRANS2QUIK_SEND_SYNC_TRANSACTION возвращает TRANS2QUIK_SUCCESS, а значение тикета в pdOrderNum равно нулю, заявки нет в терминале QUIK. Это случается не для каждого запуска функции. Происходит на Демо-счете Финама. В каком направлении двигаться дальше)?
Успешность отправки транзакции не гарантирует регистрацию заявки. Например если биржа по каким-то причинам отвергла регистрацию. Транзакция дошла до биржи? Да дошла. Значит и статус у нее соответствующий. А то что биржа отвергла регистрацию заявки это уже вопрос к бирже. Могут быть и другие примеры ситуации, в любом случае нужно смотреть на ошибку которую вернула система.
Виктор Волков написал: Ещё раз повторю вопрос- почему разработчик за много лет не сделает возможность автоматического переноса не исполненной лимитной заявки на споте как это делается на срочке!?
Еще раз повторим ответ, потому что такого функционала нет на бирже.
В QUIK всё уже давно сделано в алго модуле, но он платный
QApplication, SearchItems быстрее. На сколько именно, к сожалению затруднимся сказать т.к. число не постоянно и зависит от многих факторов. Вы можете проверить это самостоятельно на Вашей конфигурации.
rodionos написал: Было бы логично иметь соответствующий параметр и в самом Квике.
От куда ее транслировать? ведь в биржевом протоколе такого параметра нет. Будет в протоколе, тогда появится и в QUIK. Из воздуха к сожалению транслировать не умеем.
Sergey Gorokhov написал: Если сервер выше 8.0 то количество требуется отображать с учетом точности инструмента, однако, на российских рынках как правило нет инструментов с дробным количеством, так что можно также умножать на 100.
Можно поподробнее? В версии 8.1.0.30 balance отображается целым числом, зачем ещё умножать?
А никто не говорил что надо что-то умножать на версии 8.1. речь про умножение была только про старую версию где был баг.
Старатель написал: В версиях, где ошибка присутствует, чтобы получить корректное значение снятого остатка, достаточно balance умножить на 100, или размер лота, или другое значение? Или всё сложнее?
ответ зависит еще и от версии сервера. Если сервер ниже 8.0 то да, надо просто умножить на 100. Если сервер выше 8.0 то количество требуется отображать с учетом точности инструмента, однако, на российских рынках как правило нет инструментов с дробным количеством, так что можно также умножать на 100.
rodionos написал: подскажите, как правильно интерпретировать 5-ый и 6-ой биты таблицы trades.
Кстати, возможно это то что Вам нужно TRADE_MAKER = 32; /**< Пассивная (сделка образована по ранее выставленной заявке). */ TRADE_TAKER = 64; /**< Активная (сделка образована по заявке выставленной для ее образования) */
Цитата
rodionos написал: 2) Был бы полезен getAllTradeByNumber по аналогии с getOrderByNumber, для быстрого получения строки с использованием индекса. Таблица all_trades большая и в отсутствие индекса поиск через SearchItems скорее всего будет медленным.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
QApplication написал: он у вас в документации описан как string.
К сожалению Lua не умеет лезть в документацию.
Цитата
QApplication написал: в qlua.chm допишите, что для result = false type = 0; и все будет понятно.
Это не всегда так. Вернее нет гарантий что это всегда так.
Цитата
QApplication написал: насколько я понял, у вас одна структура данных для указанной функции для всех поддерживаемых рынков.
Вам понятно что на бирже нет такого параметра, как QUIK может показать то чего нет? никак, и не будет он что то придумывать просто ради того чтобы было как везде. Набор параметров для разных рынков разный, а функция одна на все рынки.
rodionos написал: По сути необходимо значение нулевого бита так как он проставлен для этой сделки в AllTrades (обезличенные сделки).
Обратите внимание что речь про обезличенные сделки. Сделка одна. А заявки приведшие к сделке две, от двух людей, у одного на покупку у другого на продажу. Однако в сделке мы видим какое-то направление. В документации на этот счет сказано следующее:
Цитата
«Купля» – заключена сделка путем выставления заявки на покупку против находящейся в торговой системе котировки на продажу; «Продажа» – сделка на продажу;
QApplication написал: или в документацию на QLUA.chm допишите тип 0 - undef
Вы не туда смотрите, Вам на result смотреть надо, если false то нет параметра, значит и характеристик параметра нет. Как уже было сказано 0 это просто значение по умолчанию. Это не значимая константа.