paluke написал: Если вы хотите считать миллисекунды, quik абсолютно бесполезен.
Утром мне удаётся считать сотые доли секунды, и некоторое время назад я часто видел, что становился первым в очередь. А сейчас вечером мало того, что в очередь набивается огромное количество всякой сволочи, так ещё и мосбиржа меняет время начала торгов: было, как положено, 19:00:01, а теперь может быть и > 19:00:04...
static int forLua_MultTwoNumbers(lua_State *L) { // получаем первый и второй параметры вызова функции из стека с проверкой каждого на число double d1 = luaL_checknumber(L, 1); double d2 = luaL_checknumber(L, 2);
// помещаем в стек результат умножения lua_pushnumber(L, d1 * d2);
return(1); // эта функция возвращает одно значение }
// список реализованных в dll пользовательских функций static struct luaL_Reg ls_lib[] = { {"MultTwoNumbers", forLua_MultTwoNumbers}, {NULL, NULL} };
Например, если мы получаем trans_reply.status == 3 (заявка выполнена), то какое время мы получаем в OTR: - время сервера биржи в момент выполнения заявки? - время сервера брокера, когда он получил ответ от сервера биржи? - что-то ещё? Аналогичный вопрос, если заявка не выполнена. В описаниях этой функции об этом ни слова...
Я сейчас перед вечерней сессией делал заявку на покупку и в OnTransReply получил ответ "не выполнена", время при этом такое: 19:00:04.224811. Но я эту заявку повторял несколько раз и в следующий раз получил ответ "выполнена", время при этом такое: 19:00:04.377904.
А это я получал содержимое стаканов и отмечал время на моём ПК, которое я перед этим синхронизировал с NTP сервером: 19:00:04.621937 19:00:04.746745 19:00:04.932090 19:00:05.319159
И только в 4-й раз, т.е., когда время было 19:00:05.319159, моя заявка появилась в стакане. Как можно понять такую задержку? Может ли кто-то задерживать мои заявки намеренно?
Сейчас сталкивался с тем, что выставляю в Квике 11.0.0.92 заявку, она принимается, но не отображается в стаканах и в табл. заявок. При этом в андроид приложении она отображается в активных заявках. Перезагрузил Квик - не помогло. Помог перезаказ данных...
Потом в стаканах вдруг вместо 40 строк стало отображаться только 4 (2 на покупку, 2 на продажу), а в андроид приложении отображались все 40 строк. Через несколько секунд стали отображаться все 40 строк. Пока писал, это повторилось (отображались 2 строки). Брокер ВТБ. Не знаю, что думать...
В файле "Интерпретатор языка Lua.pdf" в разделе "3.12.3 Особенности получения значений Таблицы текущих торгов" написано: === • Автоматически из скрипта Lua с помощью функций ParamRequest или CreateDataSource, при включенной настройке Рабочего места QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»).
Терминал QUIK автоматически заказывает параметры, необходимые для корректного расчета лимитов, при включенной настройке Рабочего места QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»). ===
Но фразы «Исходя из настроек открытых пользователем таблиц» в меню Система / Настройки / Основные настройки / Программа / Получение данных не видать...
Т.е. сервер определяет B или S с точки зрения рыночной заявки? А, к примеру, в начале торгов мне может встретится встречная лимитная заявка, тогда как сервер выставляет букву? В зависимости от того, чья заявка поступила раньше? В остальном заявки равны.
Когда приходит инфо, напр., по OnAllTrade, там присутствует направление сделки: B - покупка и S - продажа. Я заметил, что, когда я продаю, то в этой сделке стоит B, когда покупаю, - S. А как сервер биржи определяет напр. сделки? А если моя заявка будет по текущей цене, а не лимитная, то тогда направление будет другое? От вида встречной ко мне заявки (лимитная или по маркету) это направление зависит?
Ещё, как я писал, в этом сером прямоугольничке шрифт должен быть меньше, чем в клетке, и если в клетке, в которой есть заявка, у юзера выбран жирный шрифт, то это не должно влиять на шрифт внутри серого прямоугольничка. Серый фон прямоугольничка должен быть достаточно тёмный, чтобы белый цвет цифр в нём хорошо был виден.
И эти прямоугольнички и числа в них должны быть выровнены по правому краю клетки (столбца), в котором они стоят, как сделано у ВТБ.
Точнее: этот серый прямоугольничек, так же, как и клетка, в которой он находится, кликабельный. По щелчку левой кнопкой при быстром режиме ввода будет выставлена заявка на покупку, если это столбец с покупкой, и заявка на продажу, если щелчок был в столбце "Продажи".
На этих картинках вместо 3-х столбцов уже 5... А я вначале сказал, как надо сделать (как сделали в приложении ВТБ Инвестиции). Там по-прежнему остаётся 3 столбца, не надо другого дизайна и непонятных действий по щелчкам, которые приводят к потере денег...
У меня, естественно, быстрый ввод/снятие заявок. Поэтому моё предложение сделать показ объёмов в моём родном дизайне стакана остаётся в силе: тут сохраняются все плюсы и нет минусов.Как я уже писАл, для этого в столбцах "Покупка" и "Продажа" имеются пустые места...
Не пойму, закрыт вопрос или нет... У меня на экране теперь 2 дизайна стаканов: который был раньше и который Вы посоветовали. Я не пойму, как в подменю "Установка операции заявки" что-то можно выбирать, если для разных дизайнов стаканов щелчок по строке с ценой покупки (на зелёном фоне) действует противоположно... Интуитивно кажется, что щелчок по клетке с лучшей ценой покупки должен выставлять заявку на покупку, а не на продажу... Как я с помощью этого подменю могу сделать так, чтобы в новом дизайне стакана щелчок по цене покупки выставлял заявку на покупку, а щелчок в этой строке по цене - заявку на продажу (т.е. наоборот, чем сейчас) непонятно. Да ещё и чтобы это не повлияло на стаканы с прежним дизайном.
Похоже, новый дизайн стакана лучше использовать только для того, чтобы увидеть свои объёмы заявок, а не для торговли, от греха подальше... Но тогда экран загромождается лишним стаканом.
Оказалось, что по щелчку по цене в зелёном поле (покупок) выставляется заявка на покупку, а при щелчке на столбце цены выставляется заявка на продажу! Это совсем не так, как в том виде стакана, который был у меня раньше, и это очень неожиданно. Там в столбце покупок не выставлялась заявка на продажу. Так можно щёлкнуть и много чего потерять...
Выбрал вид стакана по снимку, стакан стал Уже, но я заметил неожиданное поведение: если щёлкнуть по клетке в столбце с ценой, то Квик пытается выставить заявку. В моём прежнем дизайне стакана такой щелчок только устанавливал подсветку на строке. Это неожиданное поведение, которое может привести к потере денег, ай-яй-яй...
Спасибо, только у меня это почему-то называется не "Свой объём", а отдельно: "Своя покупка" и "Своя продажа". В результате, ширина стакана сильно выросла, а это не очень хорошо, т.к. у меня экран не резиновый. Если бы вы сделали, как я выше советовал, то ширина стакана не увеличилась бы.
На Рис_1.PNG в столбце "Свой объём" вижу 1 акцию по цене 2.91. Если эта 1 акция является суммой всех заявок по цене 2.91, то это то, что мне нужно. Это можно настроить в Квике?
Да, отображать всего акций по каждой цене (в её строке), по которой есть мои заявки. По заявкам на продажу для этого есть место в правой половине стакана, а по заявкам на покупку - в левой.
По идее, сервер брокера должен быть готов до начала приёма предварительных заявок... В связи с этим такой вопрос: в таблице заявок orders что означают поля
activation_time NUMBER Время активации datetime TABLE Дата и время
datetime это какое время и чьё оно? Оно приходит с сервера биржи, брокера или это Квик даёт время на моём ПК? Это время принятия заявки Квиком, сервером биржи?.. Не смог найти разъяснения.
А activation_time это что? Я посмотрел для одной заявки, оно равно 0. И какой формат у этого времени?
Чтобы при приёме заявок раньше встать в очередь, я синхронизирую часы Виндовс по атомным часам и проверяю это в сервисах типа time100.ru. Но всё равно возникают погрешности. Напр., утром эти сервисы, как правило, говорят (да ещё и каждый по-своему), что у меня точное время, а в 19 часов, что мои часы спешат на 0.3 сек... Можно ли как-то узнавать время точнее, напр., с точностью 5-10 мсек? Например, получая его с сервера брокера? Или более точно установить его в Виндовс? Регион - Ставропольский край (не сам Ставрополь).
К примеру, в приложении ВТБ Инвестиции для Андроида сделали показ объёмов заявок в биржевом стакане более мелким шрифтом внутри серого прямоугольничка со скруглёнными краями. Для этого в Квике есть свободное место в столбцах, соответственно, "Продажа" и "Покупка". Это бывает нужно, если хочешь отменить или перенести все заявки по данной цене. Сейчас для этого я заглядываю в Андроид приложение.
Спасибо за внимание, мне нужно время, чтобы проверить, по всем ли сделкам приходит инфо по OnAllTrade. Посмотрю, что у меня задано в Основные_настройки/Получение_данных/Обезличенные_сделки и в файле конфигурации .wnd.
Скажите, для чего эта информация из основных настроек может дублироваться в файле конфигурации .wnd? Чтобы скрипт получал только часть из того, на что я подписался в основных настройках, чтобы зря не грузить сервер брокера?
Спасибо, я в этом окне ничего не настраивал, но вижу, что там выбрано по максимуму всё, что я выбирал, создавая таблицы обезличенных сделок в разных конфигурационных файлах.
Т.к. эти явления происходят редко, то мне придётся для этого вместо торговли заниматься ловлей багов и записью видео. Для этого существует профессия тестера с соотв. зарплатой.
Почему-то скрипт получает инфо по каким-то акциям по OnAllTrade, даже если этих акций нет в табл. обезл. сделок, а по каким-то акциям, которых также нет в этой таблице, скрипт не получает такой информации.
Если хочется получать скриптом информацию по каждой сделке с выбранными акциями, обязательно ли в загруженном конфигурационном файле иметь таблицу обезличенных сделок по всем этим акциям? Почему для этого недостаточно в скрипте подписаться через Subscribe_Level_II_Quotes на получение этой информации? Если не создавать табл. обезл. сделок, то скрипт получает только инфо по OnQuote...
Очень не удобно быбирать компании в подокошечке "Доступные инструменты". Оно такое маленькое, что потянешь за бегунок, и проскакиваешь неизвестно куда. И поиск в этом окошечке работает очень странно. То ли виснет, то ли неправильно ищет...
Иногда запускаю квик, выбираю Система/Загрузить настройки из файла..., и квик зачем-то открывает каталог Виндовс Изображения. Закрываю окно с этим каталогом, повторяю предыдущую операцию, и открыватся правильный каталог QUIK_VTB. Загадка природы!
Также иногда отсутствует звук при завершении заявки (слышен только звук сделки).
В таблице заявок неплохо было бы сделать множественное выделение заявок согласно юзеринтерфейсу Виндовс: щёлкая левой кнопкой при нажатой клавише Ctrl для добавления к выделенному этой строки и нажатой клавише Shift для добавления к выделенному диапазонов строк.
PS: представляю сколько будет возмущённых жалоб юзеров из-за безвинно удалённых заявок в результате ошибок в программировании. :-)
А, пардон, я сейчас проверил: в 1-м случае не редактируется текущая заявка, а создаётся новая. Меня сбило с толку, что при выборе из контекстного меню в заголовке окна написано "Ввод заявки", тогда как должно быть "Редактирование заявки", и просто не надо заранее удалять эту заявку!
Если в таблице заявок по строке с активной заявкой дважды щёлкнуть, то появляется окно типа "МБ ФР: Т+ ETF: Ввод заявки" и можно редактировать её параметры. Это работает нормально. Но если это окно вызвать щелчком правой кнопки по строке с заявкой и выбрать из контекстного меню "Заменить заявку", то ещё до появления этого окна заявка отменяется. Если юзер передумает редактировать заявку, то ему придётся воссоздать эту заявку и он потеряет очередь в биржевом стакане.
Не знаю, чья это ошибка, возможно, серверной версии Квик, которой пользуются брокеры. Я у брокера ВТБ торгую этим фондом с тикером LQDT. Это единственный фонд, на который нет даже комиссии биржи (если брокер ВТБ). Я давно пишу и звоню в ВТБ, чтобы исправили ошибку: иногда примерно в одной сделке из 100 берётся комиссия биржи. На следующий день эту комиссию возвращают, но всё равно из-за неё есть потеря денег. В последнее время эту комиссию не брали на дневной сессии, а брали очень редко при сделках после 21 часа. А сегодня прямо с утра её стали взимать, да ещё и довольно часто. Неужели программисту трудно вставить в код условный оператор: если тикер == LQDT, то комиссию биржи не берём?
Кто скажет, зачем столько условий для проверки, что заявка выполнена (qty == 0, 2 мл. бита флагов == 0)? Чем эти условия отличаются? Может быть, когда qty == 0, но флаги говорят, что заявка ещё не выполнена, деньги от продажи акций ещё не вернулись на счёт? Меня интересует, как скрипту узнать, что эти деньги от продажи акции вернулись на счёт и их можно снова использовать для покупки?
Кстати, накануне обновил квик до вер. 10.0.1.18, и эта программка выдаёт true true и нули, т.е. обе функции ParamRequest и getParamEx2 не работают. ParamRequest выдаёт true при неверных параметрах (неверном классе бумаги).
Почему-то значения BID и OFFER в моей программке не соответствуют положению дел в стакане котировок, который я смотрю в Quik и в приложении для Андроида. Такое впечатление, что в скрипт сначала передаются старючие значения и только через несколько минут эти значения совпадают с тем, что показывает терминал и приложение. Программка такая: