24.06.2025 обновил версию на ту, что в сабже. Сегодня в 6:50 выставил заявки на покупку акций тикер LQDT, код класса TQTF_F на заёмные средства брокера, а также выставил заявку на продажу этих же акций, которые есть у меня в наличии. Но не угадал цену (выставил на шаг цены ниже. Выставляю покупную цену по лучшей цене для покупки, а продажную по лучшей цене для продажи), минуты через 4 отменил эти заявки (таблица заявок стала пустой). Примерно в 6:55 попытался выставить эти заявки обе на шаг цены выше, но Квик не дал выставить заявку ни на покупку, ни на продажу. Сообщения, соответственно, дал такие: "Превышен лимит кредитования" и "Инструмент запрещён для операции шорт" (или как-то так). До последнего обновления Квика такого случая не наблюдал. Помогло отключение от сервера брокера и переподключение. После этого смог выставить обе эти заявки по тем же ценам, на которые получил отказ от Квика.
Звонил брокеру, админ нашел мои заявки в журнале сервера и сказал, что видит, что заявки были выставлены и отменены и потом мои заявки не принимались, т.к. я "не проходил по лимитам". Он советовал в этих случаях перезаказывать данные (торг. данные текущей сессии, локальные справочники). Также я по его совету запускал файл clear.cmd из папки Квика.
Я не понял конкретной причины запрета выставить заявки (количество акций для покупки и продажи были легальными, а пытался продавать я те акции, которые были у меня на счёте). Пользуюсь только основным счётом. Такое чувство, что Квик то ли что-то не передал на сервер, то ли что-то с него не скачал, хотя, времени для этого было достаточно. Подозреваю, что Квик почему-то считал, что заявки не были отменены, иначе непонятно, как объяснить отказ выставить заявки.
Может быть, поддержка Квика это объяснит. Возможно, при последнем обновлении Квика что-то не то сделали?
Обезличенные сделки
Пользователь
Сообщений: Регистрация: 27.12.2022
26.06.2025 23:00:42
1. Эта тема уже разбиралась на форуме, напр.: Направление сделки определяется по активной стороне, которая инициировала следку. Т.е. кто-то выставил лимитную заявку и сидит пассивно ждёт, что найдётся тот, кто активно продаст/купит по выставленной лимитчиком не лучшей для активной стороны цене (или рыночной заявкой). 2. Возможно, а если сделки идут не очень часто, то можно и на слабом ПК. Напр., у меня безвентиляторный, макс. частота 2 ГГц, память 8 Гб DDR3L 1.6 ГГц, да ещё и своп файл отключен. TDP ЦП 15 Вт.
Окончательное решение вопроса с getQuoteLevel2. Вопрос к разработчикам QLua, Нужно, наконец, что-то исправить?
Пользователь
Сообщений: Регистрация: 27.12.2022
21.06.2025 00:03:21
Сегодня в конце раб. дня мосбиржа выдала ответ на getQuoteLevel2 не такой, как всегда (как будто они там прочитали то, что я сегодня здесь написал ). Моя программка выдала отладочное сообщение, что вернулось не nil. Остаётся считать, что вернулось bid_count == '0' и offer_count == '0'. В этом случае моя программка не проверяет, что там с таблицами bid и offer.
Окончательное решение вопроса с getQuoteLevel2. Вопрос к разработчикам QLua, Нужно, наконец, что-то исправить?
Пользователь
Сообщений: Регистрация: 27.12.2022
20.06.2025 13:01:05
Сейчас смотрел свои исходники, вспоминал, что там давно уже делал и пришёл к выводу, что на том тикере, с которым я работаю, не получится узнать, что там возвращается, nil или "", потому что при вызове OnQuote всегда есть спрос и предложение в стакане. За исключением последней строки, что я приводил выше:
Код
LQDT 23:50:02.061765
В этом последнем вызове перед окончанием вечерней сессии, по моему мнению, getQuoteLevel2 возвращает nil.
Окончательное решение вопроса с getQuoteLevel2. Вопрос к разработчикам QLua, Нужно, наконец, что-то исправить?
Пользователь
Сообщений: Регистрация: 27.12.2022
20.06.2025 11:36:25
Сегодня попробую выяснить, что там getQuoteLevel2 выдаёт/не выдаёт.
Я ещё заметил противоречие в самой справке QLUA.chm: сначала там говорится, что
Код
При отсутствии и спроса и предложения функция возвращает таблицу без параметров bid и offer.
А потом, что
Код
bid TABLE Котировки спроса (покупки). При отсутствии спроса возвращается пустая строка.
offer TABLE Котировки предложений (продажи). При отсутствии предложения возвращается пустая строка.
Насколько я помню, bid и offer - таблицы, которые состоят из массива таблиц, каждый элемент массива - таблица, которая содержит 2 строки - price и quantity.
Я почему-то уверен, что при отсутствии спроса (bid_count == "0") таблица bid будет отсутствовать, а при отсутствии предложения (offer_count == "0") таблица offer будет отсутствовать.
Окончательное решение вопроса с getQuoteLevel2. Вопрос к разработчикам QLua, Нужно, наконец, что-то исправить?
Пользователь
Сообщений: Регистрация: 27.12.2022
19.06.2025 12:50:24
Может быть, вместо lua_pcall быстрее использовать lua_call?
Пардон: надо было вывод программки тоже заключить в блок code...
Окончательное решение вопроса с getQuoteLevel2. Вопрос к разработчикам QLua, Нужно, наконец, что-то исправить?
Пользователь
Сообщений: Регистрация: 27.12.2022
19.06.2025 12:46:16
Помнится, я уже спрашивал об уточнении док-ции по getQuoteLevel2... Надо, наконец уточнить: что возвращается в случае, если отсутствуют bid/offer? Это таблицы, поэтому логично возвращать nil. А в док-ции написано, что возвращается пустая строка. Если это так, то это бардак... Только что посмотрел описание этой функции в QLUA.chm (дата файла аж 2023 г.!) последней версии Quik. А между тем, ещё в 2016 г. запрос, якобы, начал рассматриваться:
Видимо, придётся самостоятельно проверять, что там возвращается: nil (NULL или 0 на Си) или ссылка на "". Но чтобы это проверить, нужно ждать конца вечерней сессии в 23:50. Он выглядит так (2 варианта):
В последних строках как раз надо выяснить, что именно возвращает getQuoteLevel2.
По идее, с этой целью можно также проверять строки bid_count, offer_count на символьный 0.
И ещё: моя программка на обработку
Код
static int forLua_OnAllTrade(lua_State *L)
тратит 6500 тактов ЦП, а на вызов
Код
static int forLua_OnQuote(lua_State *L)
{ ...
lua_getglobal(L, "getQuoteLevel2");
lua_insert(L, 1); // Используем код класса и тикер, которые уже сидят в стеке
lua_pcall(L, 2, 1, 0);
тратит 202 000 тактов!! Нельзя ли как-то ускорить работу getQuoteLevel2?
Может быть, кто-то из программистов предложит ускорение? Я склоняюсь к тому, чтобы во время большой нагрузки на Quik не вызывать getQuoteLevel2, если с момента предыд. её вызова прошло мало времени.
Обработка клавиш в таблице LUA
Пользователь
Сообщений: Регистрация: 27.12.2022
23.05.2025 11:12:06
Я поискал и не нашёл что-то конкретное. Остаётся попробовать нажимать клавиши и выводить значения для QTABLE_CHAR и QTABLE_VKEY. Может быть, эти ссылки окажутся полезны:
Вот справка по SetTableNotificationCallback:
Задание функции обратного вызова для обработки событий в таблице. В случае успешного завершения функция возвращает «1», иначе – «0». Внимание: ВАЖНО! Недопустим вызов функций Clear и DestroyTable для t_id внутри функции обратного вызова f_cb, назначенной на таблицу с данным t_id.
Формат вызова: NUMBER SetTableNotificationCallback (NUMBER t_id, FUNCTION f_cb)
Для функции:
FUNCTION (NUMBER t_id, NUMBER msg, NUMBER par1, NUMBER par2)
Параметры: Для SetTableNotificationCallback: t_id – идентификатор таблицы, f_cb – функция обратного вызова для обработки событий в таблице.
Для функции: t_id – идентификатор таблицы, для которой обрабатывается сообщение, par1 и par2 – значения параметров определяются типом сообщения msg, msg – код сообщения.
Доступные коды событий: QTABLE_LBUTTONDOWN – нажата левая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_RBUTTONDOWN – нажата правая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_LBUTTONDBLCLK – двойное нажатие левой кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_RBUTTONDBLCLK – двойное нажатие правой кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_SELCHANGED – изменение текущей (выделенной) строки, при этом par1 равен номеру новой выделенной строки, QTABLE_CHAR – нажата символьная клавиша, при этом par2 содержит код клавиши, par1 – текущую выделенную строку, QTABLE_VKEY – нажата клавиша, при этом par2 содержит код клавиши, par1 – текущую выделенную строку, QTABLE_MBUTTONDOWN – нажата вниз средняя кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_MBUTTONDBLCLK – двойное нажатие средней кнопки мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_LBUTTONUP – отпущена левая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_RBUTTONUP – отпущена правая кнопка мыши, при этом par1 содержит номер строки, par2 – номер колонки, QTABLE_CLOSE – закрытие таблицы, при этом par1 и par2 равны нулю.
Странные случаи при торговле акциями на мосбирже
Пользователь
Сообщений: Регистрация: 27.12.2022
21.05.2025 10:53:41
И ещё вопрос: в чём смысл торговли на премаркете, примерно в 6:59:34 или в 6:59:54? Очевидно, биржа за эту возможность берёт повышенную комиссию? Почему кому-то дают такую возможность, а я у своего брокера вообще не нашёл информации о такой возможности? Похоже, мне её не дают (не особо и хотелось...)
Странные случаи при торговле акциями на мосбирже
Пользователь
Сообщений: Регистрация: 27.12.2022
21.05.2025 10:49:30
1. Иногда мне везёт и я становлюсь первым в очереди на покупку акций. Имеется в виду выставление лимитных заявок в 6:50. Недавно был такой случай: в первом срезе стакана по цене покупки была одна моя заявка, видимо, все остальные не успели догадатья, что это и будет справедливая цена покупки. Но на премаркете я был не первым, с кем совершались сделки на покупку, со мной совершили последнюю такую сделку на премаркете. При этом у всех сделок на премаркете, как обычно, было одно и то же время, включая микросекунды. С полгода-год назад в этом случае я был первым, с кем совершались такие сделки на премаркете, как и следовало ожидать.
2. Когда я выставляю лимитные заявки на продажу после покупки акций, то очередь на продажу уже становится большой, но изредка бывает так, что моя очередь на продажу подходит очень рано, когда по расчётам на основании данных по обезличенным сделкам, моя очередь на продажу ещё не прошла даже 10%. Такое впечатление, что мм иногда уступает мне свою очередь (а заявка мм может составлять 90% от всех акций по текущей цене продажи). Разве у мм есть такая технич. возможность? Вообще говоря, купить акции сложнее, чем продать, т.к. купить желающих больше.
Вопрос: как это всё можно объяснить?
Ошибочное сообщение "Данный инструмент запрещен для операции шорт"
Пользователь
Сообщений: Регистрация: 27.12.2022
07.05.2025 11:18:27
Quik ver. 12.2.2.8, тикер LQDT, класс TQTF_F. Сегодня во время, когда у меня шли операции покупки, выставлял заявки на продажу этих только что купленных акций на шаг цены выше и впервые увидел сабж. При этом эти заявки на продажу тут же появлялись в таблице заявок и, когда подошла их очередь, выполнились. С давних пор занимаюсь этим скорбным трудом, но сабж увидел впервые. Каких-либо подтверждающих документов для этого явления у меня нет.
Тоорможение Квика в начале утренней сессии
Пользователь
Сообщений: Регистрация: 27.12.2022
04.04.2025 07:01:05
Квик последней версии (с тех пор она обновилась). Брокер ВТБ, к нему не обращался.
Тоорможение Квика в начале утренней сессии
Пользователь
Сообщений: Регистрация: 27.12.2022
28.03.2025 07:32:58
С 1 марта, когда торги начались в 7 утра, каждый раз вижу, что в начале торгов Квик как бы зависает и не получает данные по стакану и сделкам. В течение секунд 15-ти эти данные оказываются потерянными. Возможно, это связано с потоком мелких сделок, но до 1 марта я этого не замечал. Это у меня одного так?
Жулики заспамили стакан
Пользователь
Сообщений: Регистрация: 27.12.2022
24.01.2025 10:10:00
Сегодня перед началом торгов жулики заспамили стакан заявками по 1 акции (ВТБ ликвидность), так что не было видно лучшей цены на покупку и продажу. Как это выглядит с точки зрения биржевых понятий? На это имеет смысл жаловаться в мосбиржу или с этим только в "Спортлото"?
Недостаточно прав для использования модуля "Модуль неторговых поручений"
Пользователь
Сообщений: Регистрация: 27.12.2022
06.01.2025 10:54:08
И как найти этот модуль? Я прошёлся по меню и пока его не увидел...
Недостаточно прав для использования модуля "Модуль неторговых поручений"
Пользователь
Сообщений: Регистрация: 27.12.2022
06.01.2025 10:49:49
Сейчас обновил версию на 11.4.1.3 и при логине сразу увидел сообщение с сабжем. Это, видимо, аналог того, что работает в приложении на Андроиде.
Как же мне заиметь достаточно прав для использования этого модуля?
Квик не пытается восстановить соединение
Пользователь
Сообщений: Регистрация: 27.12.2022
06.01.2025 10:46:14
Проблема больше не наблюдается.
Квик не пытается восстановить соединение
Пользователь
Сообщений: Регистрация: 27.12.2022
26.12.2024 11:47:18
После перезагрузки Квика после ввода пароля соединение заработало.
Квик не пытается восстановить соединение
Пользователь
Сообщений: Регистрация: 27.12.2022
26.12.2024 11:46:15
Сейчас обновил версию на 11.4.0.54 и заметил, что соединение с брокером разорвалось 50 мин. назад, Интернет есть, а Квик не пытается восстановить соединение. Настройки по проверке связи стандартные. Прошлая версия сегодня пыталась восстановить соединение при обрыве.
Московский ntp сервер перестал работать
Пользователь
Сообщений: Регистрация: 27.12.2022
17.10.2024 11:53:34
Сервер точного времени ntp1.stratum2.ru, по которому я ставлю часы, уже 2-й день выдаёт ошибки при замере времени: ошибка: 0x800705B4. Что случилось, и как исправить? Пока пользуюсь сервером из СПб, но там задержка сети может отличаться от московской.
Кто что скажет по теме написания книжки по работе в Quik?
Пользователь
Сообщений: Регистрация: 27.12.2022
09.10.2024 11:53:31
Хочется узнать, имеет ли смысл написать книжку по работе в Quik: настройка, основы программирования на Lua и в Си на примерах получения котировок и обезличенных сделок по заданным тикерам, использование функций Lua и QLua?
Смотрю, какое-то старьё по сходным темам на распродаже: ozon.ru/search/?text=книга+торговый+терминал+quik ozon.ru/category/skalping-treyding/
То ли книжки плохо покупают, потому что скачивают ворованные в pdf, то ли программировать для домохозяек и пенсионеров сложно. Поэтому толстые книжки писать неохота...
Можно ли будет найти рекламодателей (за рекламу в книжке автор тоже что-то получает)?
Данные по бумагам в портфеле скриптом lua, Данные по бумагам в портфеле скриптом lua
Пользователь
Сообщений: Регистрация: 27.12.2022
01.10.2024 11:05:44
Описание: Функция предназначена для получения значений параметров таблицы «Купить/Продать». Функция возвращает таблицу Lua с параметрами из таблицы QUIK «Купить/Продать», означающими возможность купить либо продать указанный инструмент «sec_code» класса «class_code», указанным клиентом «client_code» фирмы «firmid», по указанной цене «price». Если цена равна «0», то используются лучшие значения спроса/предложения. Таблица параметров
Дополнительные таблицы: Таблица параметров Параметр Тип Описание is_margin_sec STRING Признак маржинальности инструмента. Возможные значения: «0» – не маржинальная; «1» – маржинальная;
is_asset_sec STRING Принадлежность инструмента к списку бумаг, принимаемых в обеспечение. Возможные значения: «0» – не принимается в обеспечение; «1» – принимается в обеспечение;
Карина, эти файлы, что на вашем скриншоте, у меня имеются. Почему-то qrypto.cfg в окошке Шифрование прописан маленькими буквами, а на диске его имя имеет большие буквы, а в каталоге бэкапа буквы у него маленькие. Как это понять? Думаю, для программ под виндовс это не должно иметь значения.
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
05.09.2024 11:15:41
Цитата
Karina Dmitrieva написал: Serge123 , для того, чтобы проверить корректность пути к RSA-ключу необходимо отключиться от сервера, тогда настройки в меню Система / Настройки / Основные настройки, раздел Программа / Шифрование будут доступны (см. скриншот).
Отключился от сервера, но эти настройки не стали доступны. Вижу в этой вкладке то же, что приводил вчера, редактирование недоступно. Скриншот вы приложить забыли...
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
04.09.2024 11:06:45
Сообщил об этом в чате и приложил им скриншот, который взял отсюда. Операторша написала: нужно проверить, корректность пути к ключам (Система/настройки/.../программа/шифрование) и прописать путь. У меня в этой вкладке справа написано:
Шифровать с пом. СКЗИ Qrypto32 Текущее состояние СКЗИ Активно Настройки по умолчанию: <пустое поле ввода>
Все эти поля ввода нельзя редактировать. Я не разбирался с тем, что всё это значит, но до вчерашнего дня я много работал с сервером quik.vtb.ru, хотя, с ним были иногда проблемы и приходилось переходить на другой сервер.
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
04.09.2024 10:18:40
Здравствуйте, Карина.
У меня одна учётная запись, настраивал давно и настройка по умолчанию. Вчера я звонил в службу поддержки и сказал об этом, а сегодня вновь увидел ту же картинку: сервер2 (quik.vtb.ru) сразу после ввода пароля выдал вышеприведённую картинку, а сервер1 (с цифрами в графе IP адрес) сразу залогинил меня.
Операторша по общему телефону поддержки ВТБ сказала, что передаст моё обращение технарям, но у меня в этом есть сомнения. Поэтому сейчас попробую повторить это сообщение через чат в ВТБ инвестициях на анроиде. Но тут также могут быть сомнения, что сообщение дойдёт до технарей, т.к. нагрузка на поддержку высокая. Возможно, придётся написать на имейл самих технарей об этом.
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
03.09.2024 10:47:38
В 1-м сообщении ошибся: я перезагружался, чтобы ВЕРНУТЬ действие алгоритмя Нейгла.
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
03.09.2024 10:41:28
Только что разлогинился, поменял сервер на прежний, при попытке залоргиниться получил то же сообщение. Ничего не делал и через 3 сек. получил обычное сообщение, что соединение установлено...
Не смог залогиниться в десктоп квике
Пользователь
Сообщений: Регистрация: 27.12.2022
03.09.2024 10:23:30
В 9:50 выставил заявку в квике, перезагрузился для отмены алгоритма Нейгла, опять запускаю квик, на ввод пароля получаю сообщение, что у меня какие-то неправильные ключи и что-то не то с авторизацией, и так 2 раза.
А что было бы, если бы я попытался залогиниться в 4-й раз? Я, наверно, попал бы на блокировку аккаунта?
А волатильность сейчас высокая, может потребоваться срочно снять заявку (так оно и случилось), а то при её выполнении я стану должен брокеру хорошую сумму, а цена может пойти ещё ниже... Я методом тыка выбрал дополнительный сервер у брокера для связи и тогда только смог залогиниться.
Вопрос: что это была за ерунда такая?
Иногда я для подстраховки держу запущенную торговую программу на телефоне, но особого спокойствия всё равно не чувствую...
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
26.07.2024 09:58:46
В последние дни зашкаливания не наблюдается, видимо, в связи с ожиданием повышения ставки Центробанком. Покупатели не так активны.
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
26.07.2024 09:56:13
Тикер LQDT, класс TQTF_F.
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
25.07.2024 10:12:42
Кстати: вчера был рекорд количества акций на покупку (столбец "Кол. спрос" в таблице "Текущие торги"): 3.7 млрд. акций.
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
25.07.2024 10:10:01
Здравствуйте, в последней версии видел: 11.2.0.16.
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
17.07.2024 12:36:21
Ну, и если где-то в Квике есть сумма акций в заявках по всем ценам в стакане, то это число тоже должно быть int64. А также числа акций в стаканах ( а может быть, и в выставляемых заявках: а вдруг кто-то выставит заявку на покупку UINT_MAX + 1 акций?)
Нашёл ошибку в Квике: переполнение разрядной сетки
Пользователь
Сообщений: Регистрация: 27.12.2022
17.07.2024 11:48:37
В таблице "Текущие торги" в столбце "Кол. спрос" вижу отрицательное число акций, при этом в стакане в строке по цене лучшей покупки это число выводится нормально и если его сложить с модулем числа в столбце "Кол. спрос", то получается > 4 млрд (> UINT_MAX). Когда в стакане в этой строке число акций становится < 2 млрд., в таблице торгов это значение совпадает со значением в стакане.
Вывод очевиден: в этой таблице Квика (а, возможно, и в других) количества акций для покупки/продажи хранятся в типе int (32 бита со знаком (на фига ещё и со знаком?)), поэтому происходит переполнение разрядной сетки.
Хочу предупредить, что я в стакане по этой акции на moex по лучшей цене покупки видел заявок в сумме > 3.5 млрд., поэтому сразу меняйте тип этих чисел на int64 (т.к. Lua не понимает uint64).
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
13.06.2024 10:36:27
Цитата
nikolz написал: Нет никаких проблем в работе моей программы,Осталась лишь тебе понять то, что я написал Карл!!!
Я не Карл... Это уже какая-то патология...
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
11.06.2024 10:59:50
Имел в виду, что для МЕНЯ это не решение проблемы, т.к. я не знаю, как применять LuaJIT и прочие штуки...
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
11.06.2024 10:23:05
Цитата
nikolz написал: могу лишь рассказать как я решил эту проблему.
К сожалению, в этом ответе не сказано о решении этой проблемы... А именно: как в main (которая сидит в dll) обработать таблицу alltrade, если при завершении работы OnAllTrade (которая тоже сидит в dll) стек её вызова (в котором сидит ссылка на табл. alltrade) должен очиститься? Я вижу такие костыли: - запретить сборку мусора (до 18:45). - dll из OnAllTrade как-то связывается с Lua и Lua дублирует ссылки на alltrade в массив локальных переменных области видимости этого файла lua. Потом dll как-то даёт знать, что каким-то из этих переменных можно присвоить nil. Как это сделать, пока не знаю. М.б. это делается через (light)userdata, но я с этим не связывался.
Как из Си заставить Lua продублировать ссылку на таблицу, если эта ссылка сидит в стеке? Как из Си вызвать скрипт Lua, чтобы он получил этот стек вызова OnAllTrade? Иначе придётся коллбэки делать на Lua и только main на Си, а этого не хочется из-за какой-то потери скорости.
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 15:30:30
Тут возникла новая проблема: если обработчик OnAllTrade на Си уже не будет обрабатывать этот вызов, а будет что-то записывать в очередь и делать выход, то как гарантировать, что память под таблицу alltrade не будет освобождена до обработки этой таблицы в функции main, которая тоже находится в dll? Совсем отключить сборку мусора, или есть что-то ещё?
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 14:24:49
Насколько я понял из , Виндовс не суммирует установку событий во флаге события, если несколько раз вызвать SertEvent. Поэтому main должна проверять, не был ли вызван другой коллбэк, установка события от которого могла быть потеряна.
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 13:35:50
Насколько я понял, т.к. в моём случае параметр dwFlags у CreateEventA равен 0, то ResetEvent не требуется. Похоже, когда Виндовс по установленному коллбэком флагу события запускает main, то Виндовс сбрасывает этот флаг, поэтому в принципе возможна потеря возникновения события. Ясно что события не буферизуются. Ожидание множества событий тут по-моему не очень подходит, т.к. main должна отрабатывать при возникновении хотя бы одного события.
Такую книжку Рихтера (только в синей ламинированной обложке) я купил давно, тогда я ещё не программировал на Си. Пока что меня не интересует общая теория семафоров, светофоров и шлагбаумов: я сейчас конкретно переписываю скрипт с Луа на Си dll, отвлекаться на эксперименты неохота. Пока у меня обработка событий на Си происходит в коллбэках и я собираюсь перенести её в main с использованием очереди и объектов событий, как это у меня работает в Луа.
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 12:24:27
Насколько я понял, надо использовать параметр lpName в CreateEventA: коллбэки создают события со своими именами. Осталось уточнить: что будет, если оба коллбэка успеют создать события, а main ещё не запустилась для их обработки. Не будет ли потеряно второе событие?
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 12:15:04
И чтобы событие создавалось обоими коллбэками, если даже они это сделали почти одновременно.
Ускоряем скрипт и выкидываем sleep
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 12:12:27
Цитата
funduk написал: Для моих целей сообщения тоже оказались заметно быстрее, чем sleep.
У меня возник вопрос: если используется упрощённый вариант работы с событиями
и оба коллбэка OnAllTrade и OnQuote почти одновременно выдали
Код
SetEvent(evt)
При вторичной выдаче SetEvent(evt) эта установка события не выполнится? Теперь вызывается main и начинает их обрабатывать событие: она проверяет и обрабатывает общую очередь от обоих коллбэков. Это правильная работа с событиями?
Как надо по-минимуму изменить параметры CreateEventA, WaitForSingleObject и SetEvent, чтобы main знала, какой именно коллбэк выдал SetEvent(evt)?
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
Пользователь
Сообщений: Регистрация: 27.12.2022
10.06.2024 11:27:32
Цитата
nikolz написал: dll проще и быстрее отлаживать не в КВИКЕ, а в SCITE
Имеется в виду текстовый редактор ? Не пойму, как в нём можно отлаживать dll для Quik, я пока что привык к консольному редактору Фара, в качестве отладки вывожу значения переменных в файл, как делали деды и прадеды...
getQuoteLevel2Ex
Пользователь
Сообщений: Регистрация: 27.12.2022
06.06.2024 10:15:34
Вопрос к разработчикам: недокументированную функцию getQuoteLevel2Ex надёжно использовать?
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
Пользователь
Сообщений: Регистрация: 27.12.2022
28.05.2024 12:01:51
Цитата
swerg написал: А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика!
По-моему, это нормально, у меня вчера подряд много раз так было в dll на C. И только, когда я попытался записать в неоткрытый файл, Квик не устоял.
Формат вывода double без правых нулей
Пользователь
Сообщений: Регистрация: 27.12.2022
25.05.2024 23:08:19
Тут нашёл обсуждение костылей (также по ссылке оттуда на англ.):
Такое впечатление, что в общем случае надо самому в строке после snprintf удалять правые нули...