> Правильно понимаем, что речь идет о полях P и Q?
Да.
> Если Вы про окно вида (См. Рис_1), то это реакция на горячие клавиши «Ctrl»+«X»- снимает все активные заявки на продажу из текущего окна котировок по данному инструменту.
На рис. 1 у Вас не окно вида, а окно сообщения. Ctrl+x вроде бы стандартно означает "вырезать": ru.wikipedia.org/wiki/Вырезать,_копировать,_вставить
Я в стакане в поле Q выделил число, нажал Ctrl+Ins, но содержимое буфера обмена не изменилось...
> Уточните, пожалуйста, для чего Вам необходимо в поле Q (Количество инструментов) вводить числовые выражения?
Бывает нужно добавить к продаже сколько-то акций, которые были куплены по более низкой цене. И ещё бывает надо рассчитать, сколько акций, купленных взаймы у брокера, надо продать, чтобы не попасть на комиссию брокера при окончании вечерней сессии. (В этом случае нужны также умножения и деления). Я для этого пользуюсь калькулятором.
Кстати, я заметил конфликт комбинаций клавиш при работе с этими полями: если выделить значение в этом поле и нажать Ctrl+x (вырезать и поместить в буфер обмена Виндовс), то возникает страшное окошко типа "Удалить все заявки?" Кроме того, желательно, чтобы работали не только комбинации Ctrl+c/Ctrl+v, но и парные к ним Ctrl+Ins/Shift+Ins. И эти поля желательно вытягивать, чтобы они занимали всю ширину стакана.
А как насчёт того, чтобы можно было вводить в поле Q числовые выражения, хотя бы бесскобочные с + и -? (Надо учесть унарные + и -).
У меня самая свежая версия Квик, а проблема была всегда, сколько я помню. А помню, минимум, с полгода. При нажатии на клавишу при редактировании, напр., цены, задержка до появления/стирания цифры длится секунды две. Рынки/классы - обычные акции, напр., фонд ВТБ Ликвидность TQTF/LQDT.
Такое впечатление, что при редактировании полей ввода цены/количества происходит какой-то тяжёлый счёт. Можно его как-то отменить, чтобы это работало так же быстро, как щелчок по быстрой заявке в стакане?
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
Кстати, я как-то заметил, что если Квику задать сформировать отчёт по всем сделкам клиента (а их немного), то, пока он их 10 сек. формирует (Квик в это время слегка заблуривает окно), наблюдается потеря в получении скриптом обезличенных сделок и изменений в стакане (тоже на 10 сек.)
Необработанные сделки можно было бы ставить в очередь, чтобы потом отдать их скрипту? Такое впечатление, что мой скрипт получения сделок и формирование отчёта Квиком не могут работать одновременно? Квик не может использовать больше 2-х потоков? (Один для терминала и коллбэков, а другой для функции main)?
nikolz написал: покажите Ваш пример на C с ошибкой, исправлю.
Не понял: этот луа скрипт из предыдущего моего сообщения использует известную оболочку от swerg w32.dll, а работающий пример луа+длл на си, который транслируется gcc, на основе примера swerg, который собирался в VS, я получил ещё вчера.
Теперь меня интересует, как получать в длл таблицы от луа и разбирать их, напр., таблицу заявок и обезличенных сделок. Я несколько лет назад перешёл с Дельфи 7 на си под 64 бит и gcc, теперь неохота сидеть на 2-х стульях.
Кстати, если кто не знает, я автор книжки "Delphi и Turbo Pascal на занимательных примерах" (выходила в Питер-БХВ), а также нескольких других книжек, хотя, я программировал, как любитель, для развлечения, в основном писал для продажи англоязычные шареварные игры по своим идеям. А лет 15 назад я был монстром Perl regexp и написал о них лекции на intuit.ru и головоломную книжку, которая выносит мозги ногами вперёд (в связи с рекурсивными шаблонами и вообще). Понаходил в них и в Перле грубых ошибок, сообщал о них письмами Перл майнтайнерам, они их исправляли. К сожалению, эта узкая тема не приносит денег...
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
У меня только что тоже было долгое время аналогичное, CalcBuySell и getBuySellInfo тоже показывали нули, при этом приложение "ВТБ инвестиции" показывало, сколько денег и акций на счёте. Перезагружал Квик, не помогало. Минут 20 назад таблица "Состояние счёта" в Квике наконец-то заполнилась...
Спасибо, тов. swerg, за наше счастливое детство, меня сейчас интересует обмен данными между луа скриптом и длл на си. Кстати, вчера я запустил в квике ваш пример луа скрипта из 1-го поста: https://quik2dde.ru/viewtopic.php?id=329 Получил сообщение "C stack overflow". Может быть, с 2020 г. что-то поменялось в квике?
Там, оказывается, дело было в имени: не luaopen_mylib_funcs, что я вбрал из другого примера, а luaopen_luacdll, поэтому первоначальную сишную функцию можно оставить, поменяв у неё имя:
int __declspec(dllexport) luaopen_luacdll(lua_State *L) { luaL_newlib(L, ls_lib); return 1; }
И вместо int __declspec(dllexport) luaopen_mylib_funcs(lua_State *L) { luaL_newlib(L, ls_lib); return 1; }
надо вставить из исходника swerg
LUALIB_API int luaopen_luacdll(lua_State *L) { // эта функция выполнится в момент вызова require() в Lua-коде // регистрируем реализованные в dll функции, чтобы они стали дуступны для Lua // в Lua 5.1 и Lua 5.3 для этого предназначены разные функции #if LUA_VERSION_NUM >= 502 luaL_newlib(L, ls_lib); #else luaL_openlib(L, "luacdll", ls_lib, 0); #endif
Опять начал искать и наткнулся на стр. qna.habr.com/q/475056 Добавил по примеру оттуда в бат файл ключи -L. и -llua54 и получил наконец-то dll... Чертовщина...
paluke написал: Библиотеку lua нужно указывать: ключики -L, -l
Я разместил в каталоге со всеми файлами файл lua54.lib, который взял из 1-го поста quik2dde.ru/viewtopic.php?id=18 и добавил опцию -Llua54.lib, сообщения с ошибками остались точно теми же, что и выше. Если, скажем, этот формат биб-ки понимает только микрософт и не понимает gcc, то почему линковщик ничего не говорит насчёт этого либ-файла?
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? Чтобы скрипт получал только часть из того, на что я подписался в основных настройках, чтобы зря не грузить сервер брокера?
Спасибо, я в этом окне ничего не настраивал, но вижу, что там выбрано по максимуму всё, что я выбирал, создавая таблицы обезличенных сделок в разных конфигурационных файлах.