Serge123 (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 След.
Тоорможение Квика в начале утренней сессии
 
Квик последней версии (с тех пор она обновилась). Брокер ВТБ, к нему не обращался.
Тоорможение Квика в начале утренней сессии
 
С 1 марта, когда торги начались в 7 утра, каждый раз вижу, что в начале торгов Квик как бы зависает и не получает данные по стакану и сделкам. В течение секунд 15-ти эти данные оказываются потерянными. Возможно, это связано с потоком мелких сделок, но до 1 марта я этого не замечал. Это у меня одного так?
Жулики заспамили стакан
 
Сегодня перед началом торгов жулики заспамили стакан заявками по 1 акции (ВТБ ликвидность), так что не было видно лучшей цены на покупку и продажу. Как это выглядит с точки зрения биржевых понятий? На это имеет смысл жаловаться в мосбиржу или с этим только в "Спортлото"?
Недостаточно прав для использования модуля "Модуль неторговых поручений"
 
И как найти этот модуль? Я прошёлся по меню и пока его не увидел...
Недостаточно прав для использования модуля "Модуль неторговых поручений"
 
Сейчас обновил версию на 11.4.1.3 и при логине сразу увидел сообщение с сабжем. Это, видимо, аналог того, что работает в приложении на Андроиде.

Как же мне заиметь достаточно прав для использования этого модуля?
Квик не пытается восстановить соединение
 
Проблема больше не наблюдается.
Квик не пытается восстановить соединение
 
После перезагрузки Квика после ввода пароля соединение заработало.
Квик не пытается восстановить соединение
 
Сейчас обновил версию на 11.4.0.54 и заметил, что соединение с брокером разорвалось 50 мин. назад, Интернет есть, а  Квик не пытается восстановить соединение. Настройки по проверке связи стандартные. Прошлая версия сегодня пыталась восстановить соединение при обрыве.
Московский ntp сервер перестал работать
 
Сервер точного времени ntp1.stratum2.ru, по которому я ставлю часы, уже 2-й день выдаёт ошибки при замере времени: ошибка: 0x800705B4. Что случилось, и как исправить? Пока пользуюсь сервером из СПб, но там задержка сети может отличаться от московской.
Кто что скажет по теме написания книжки по работе в Quik?
 
Хочется узнать, имеет ли смысл написать книжку по работе в Quik: настройка, основы программирования на Lua и в Си на примерах получения котировок и обезличенных сделок по заданным тикерам, использование функций Lua и QLua?

Смотрю, какое-то старьё по сходным темам на распродаже:
ozon.ru/search/?text=книга+торговый+терминал+quik
ozon.ru/category/skalping-treyding/

То ли книжки плохо покупают, потому что скачивают ворованные в pdf, то ли программировать  для домохозяек и пенсионеров сложно. Поэтому толстые книжки писать неохота...

Можно ли будет найти рекламодателей (за рекламу в книжке автор тоже что-то получает)?
Данные по бумагам в портфеле скриптом lua, Данные по бумагам в портфеле скриптом lua
 
 Описание:
Функция предназначена для получения значений параметров таблицы «Купить/Продать». Функция возвращает таблицу Lua с параметрами из таблицы QUIK «Купить/Продать», означающими возможность купить либо продать указанный инструмент «sec_code» класса «class_code», указанным клиентом «client_code» фирмы «firmid», по указанной цене «price». Если цена равна «0», то используются лучшие значения спроса/предложения. Таблица параметров

Формат вызова:
TABLE getBuySellInfo (STRING firm_id, STRING client_code, STRING class_code, STRING sec_code, NUMBER price)

Дополнительные таблицы:
Таблица параметров
Параметр Тип Описание
is_margin_sec STRING Признак маржинальности инструмента. Возможные значения:
«0» – не маржинальная;
«1» – маржинальная;

is_asset_sec STRING Принадлежность инструмента к списку бумаг, принимаемых в обеспечение. Возможные значения:
«0» – не принимается в обеспечение;
«1» – принимается в обеспечение;
Код
-- Запрашиваем данные
result = getBuySellInfo(firm_id, client_code, class_code, sec_code, 0)

-- Выводим таблицу результата
message(
    "is_margin_sec = " .. tostring(result.is_margin_sec) .. "; \n" ..
    "is_asset_sec = " .. tostring(result.is_asset_sec) .. "; \n" ..
    "balance = " .. tostring(result.balance) .. "; \n" ..
    "can_buy = " .. tostring(result.can_buy) .. "; \n" ..
    "can_sell = " .. tostring(result.can_sell) .. "; \n" ..
    "position_valuation = " .. tostring(result.position_valuation) .. "; \n" ..
    "value = " .. tostring(result.value) .. "; \n" ..
    "open_value = " .. tostring(result.open_value) .. "; \n" ..
    "lim_long = " .. tostring(result.lim_long) .. "; \n" ..
    "long_coef = " .. tostring(result.long_coef) .. "; \n" ..
    "lim_short = " .. tostring(result.lim_short) .. "; \n" ..
    "short_coef = " .. tostring(result.short_coef) .. "; \n" ..
    "value_coef = " .. tostring(result.value_coef) .. "; \n" ..
    "open_value_coef = " .. tostring(result.open_value_coef) .. "; \n" ..
    "share = " .. tostring(result.share) .. "; \n" ..
    "short_wa_price = " .. tostring(result.short_wa_price) .. "; \n" ..
    "long_wa_price = " .. tostring(result.long_wa_price) .. "; \n" ..
    "profit_loss = " .. tostring(result.profit_loss) .. "; \n" ..
    "spread_hc = " .. tostring(result.spread_hc) .. "; \n" ..
    "can_buy_own = " .. tostring(result.can_buy_own) .. "; \n" ..
    "can_sell_own = " .. tostring(result.can_sell_own) .. "; \n"
)
Глубина стакана
 
Глубина стакана сохраняется в файле price_limits.ini, это BOOKDEPTH=...
Глубина стакана
 
Сравните Система/Настройки/Параметры инструментов/Глубина стакана.
Не смог залогиниться в десктоп квике
 
Карина, эти файлы, что на вашем скриншоте, у меня имеются. Почему-то qrypto.cfg в окошке Шифрование прописан маленькими буквами, а на диске его имя имеет большие буквы, а в каталоге бэкапа буквы у него маленькие. Как это понять? Думаю, для программ под виндовс это не должно иметь значения.
Не смог залогиниться в десктоп квике
 
Цитата
Karina Dmitrieva написал:
Serge123 , для того, чтобы проверить корректность пути к RSA-ключу необходимо отключиться от сервера, тогда настройки в меню Система / Настройки / Основные настройки, раздел Программа / Шифрование будут доступны (см. скриншот).
Отключился от сервера, но эти настройки не стали доступны. Вижу в этой вкладке то же, что приводил вчера, редактирование недоступно. Скриншот вы приложить забыли...
Не смог залогиниться в десктоп квике
 
Сообщил об этом в чате и приложил им скриншот, который взял отсюда.
Операторша написала: нужно проверить, корректность пути к ключам (Система/настройки/.../программа/шифрование) и прописать путь. У меня в этой вкладке справа написано:

Шифровать с пом. СКЗИ     Qrypto32
Текущее состояние СКЗИ   Активно
Настройки по умолчанию:   <пустое поле ввода>

Все эти поля ввода нельзя редактировать.
Я не разбирался с тем, что всё это значит, но до вчерашнего дня я много работал с сервером quik.vtb.ru, хотя, с ним были иногда проблемы и приходилось переходить на другой сервер.
Не смог залогиниться в десктоп квике
 
Здравствуйте, Карина.

У меня одна учётная запись, настраивал давно и настройка по умолчанию. Вчера я звонил в службу поддержки и сказал об этом, а сегодня вновь увидел ту же картинку: сервер2 (quik.vtb.ru) сразу после ввода пароля выдал вышеприведённую картинку, а сервер1 (с цифрами в графе IP адрес) сразу залогинил меня.

Операторша по общему телефону поддержки ВТБ сказала, что передаст моё обращение технарям, но у меня в этом есть сомнения. Поэтому сейчас попробую повторить это сообщение через чат в ВТБ инвестициях на анроиде. Но тут также могут быть сомнения, что сообщение дойдёт до технарей, т.к. нагрузка на поддержку высокая. Возможно, придётся написать на имейл самих технарей об этом.
Не смог залогиниться в десктоп квике
 
В 1-м сообщении ошибся: я перезагружался, чтобы ВЕРНУТЬ действие алгоритмя Нейгла.
Не смог залогиниться в десктоп квике
 
Только что разлогинился, поменял сервер на прежний, при попытке залоргиниться получил то же сообщение. Ничего не делал и через 3 сек. получил обычное сообщение, что соединение установлено...
Не смог залогиниться в десктоп квике
 
В 9:50 выставил заявку в квике, перезагрузился для отмены алгоритма Нейгла, опять запускаю квик, на ввод пароля получаю сообщение, что у меня какие-то неправильные ключи и что-то не то с авторизацией, и так 2 раза.

А что было бы, если бы я попытался залогиниться в 4-й раз? Я, наверно, попал бы на блокировку аккаунта?

А волатильность сейчас высокая, может потребоваться срочно снять заявку (так оно и случилось), а то при её выполнении я стану должен брокеру хорошую сумму, а цена может пойти ещё ниже... Я методом тыка выбрал дополнительный сервер у брокера для связи и тогда только смог залогиниться.

Вопрос: что это была за ерунда такая?

Иногда я для подстраховки держу запущенную торговую программу на телефоне, но особого спокойствия всё равно не чувствую...
Нашёл ошибку в Квике: переполнение разрядной сетки
 
В последние дни зашкаливания не наблюдается, видимо, в связи с ожиданием повышения ставки Центробанком. Покупатели не так активны.
Нашёл ошибку в Квике: переполнение разрядной сетки
 
Тикер LQDT, класс TQTF_F.
Нашёл ошибку в Квике: переполнение разрядной сетки
 
Кстати: вчера был рекорд количества акций на покупку (столбец "Кол. спрос" в таблице "Текущие торги"): 3.7 млрд. акций.
Нашёл ошибку в Квике: переполнение разрядной сетки
 
Здравствуйте, в последней версии видел: 11.2.0.16.
Нашёл ошибку в Квике: переполнение разрядной сетки
 
Ну, и если где-то в Квике есть сумма акций в заявках по всем ценам в стакане, то это число тоже должно быть int64. А также числа акций в стаканах ( а может быть, и в выставляемых заявках: а вдруг кто-то выставит заявку на покупку UINT_MAX + 1 акций?)
Нашёл ошибку в Квике: переполнение разрядной сетки
 
В таблице "Текущие торги" в столбце "Кол. спрос" вижу отрицательное число акций, при этом в стакане в строке по цене лучшей покупки это число выводится нормально и если его сложить с модулем числа в столбце "Кол. спрос", то получается > 4 млрд (> UINT_MAX). Когда в стакане в этой строке число акций становится < 2 млрд., в таблице торгов это значение совпадает со значением в стакане.

Вывод очевиден: в этой таблице Квика (а, возможно, и в других) количества акций для покупки/продажи хранятся в типе int (32 бита со знаком (на фига ещё и со знаком?)), поэтому происходит переполнение разрядной сетки.

Хочу предупредить, что я в стакане по этой акции на moex по лучшей цене покупки видел заявок в сумме > 3.5 млрд., поэтому сразу меняйте тип этих чисел на int64 (т.к. Lua не понимает uint64).
Ускоряем скрипт и выкидываем sleep
 
Цитата
nikolz написал:
Нет никаких проблем в работе моей программы,Осталась лишь тебе понять то, что я написал Карл!!!
Я не Карл...
Это уже какая-то патология...
Ускоряем скрипт и выкидываем sleep
 
Имел в виду, что для МЕНЯ это не решение проблемы, т.к. я не знаю, как применять LuaJIT и прочие штуки...
Ускоряем скрипт и выкидываем sleep
 
Цитата
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
 
Тут возникла новая проблема: если обработчик OnAllTrade на Си уже не будет обрабатывать этот вызов, а будет что-то записывать в очередь и делать выход, то как гарантировать, что память под таблицу alltrade не будет освобождена до обработки этой таблицы в функции main, которая тоже находится в dll? Совсем отключить сборку мусора, или есть что-то ещё?
Ускоряем скрипт и выкидываем sleep
 
Насколько я понял из https://learn.microsoft.com/ru-ru/windows/win32/api/synchapi/nf-synchapi-setevent , Виндовс не суммирует установку событий во флаге события, если несколько раз вызвать SertEvent. Поэтому main должна проверять, не был ли вызван другой коллбэк, установка события от которого могла быть потеряна.
Ускоряем скрипт и выкидываем sleep
 
Насколько я понял, т.к. в моём случае параметр dwFlags у CreateEventA равен 0, то ResetEvent не требуется. Похоже, когда Виндовс по установленному коллбэком флагу события запускает main, то Виндовс сбрасывает этот флаг, поэтому в принципе возможна потеря возникновения события. Ясно что события не буферизуются. Ожидание множества событий тут по-моему не очень подходит, т.к. main должна отрабатывать при возникновении хотя бы одного события.

Такую книжку Рихтера (только в синей ламинированной обложке) я купил давно, тогда я ещё не программировал на Си. Пока что меня не интересует общая теория семафоров, светофоров и шлагбаумов: я сейчас конкретно переписываю скрипт с Луа на Си dll, отвлекаться на эксперименты неохота. Пока у меня обработка событий на Си происходит в коллбэках и я собираюсь перенести её в main с использованием очереди и объектов событий, как это у меня работает в Луа.
Ускоряем скрипт и выкидываем sleep
 
Насколько я понял, надо использовать параметр lpName в CreateEventA: коллбэки создают события со своими именами. Осталось уточнить: что будет, если оба коллбэка успеют создать события, а main ещё не запустилась для их обработки. Не будет ли потеряно второе событие?
Ускоряем скрипт и выкидываем sleep
 
И чтобы событие создавалось обоими коллбэками, если даже они это сделали почти одновременно.
Ускоряем скрипт и выкидываем sleep
 
Цитата
funduk написал:
Для моих целей сообщения тоже оказались заметно быстрее, чем sleep.
У меня возник вопрос: если используется упрощённый вариант работы с событиями
Код
CreateEventA(NULL, false, false, NULL);
WaitForSingleObject
SetEvent
и оба коллбэка OnAllTrade и OnQuote почти одновременно выдали
Код
SetEvent(evt)
При вторичной выдаче SetEvent(evt) эта установка события не выполнится?
Теперь вызывается main и начинает их обрабатывать событие: она проверяет и обрабатывает общую очередь от обоих коллбэков. Это правильная работа с событиями?

Как надо по-минимуму изменить параметры CreateEventA, WaitForSingleObject и SetEvent, чтобы main знала, какой именно коллбэк выдал SetEvent(evt)?
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
 
Цитата
nikolz написал:
dll проще и быстрее отлаживать не в КВИКЕ, а в SCITE
Имеется в виду текстовый редактор https://ru.wikipedia.org/wiki/SciTE ?
Не пойму, как в нём можно отлаживать dll для Quik, я пока что привык к консольному редактору Фара, в качестве отладки вывожу значения переменных в файл, как делали деды и прадеды... :what:
getQuoteLevel2Ex
 
Вопрос к разработчикам: недокументированную функцию getQuoteLevel2Ex надёжно использовать?
https://quik2dde.ru/viewtopic.php?id=189
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
 
Цитата
swerg написал:
А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика!
По-моему, это нормально, у меня вчера подряд много раз так было в dll на C.
И только, когда я попытался записать в неоткрытый файл, Квик не устоял. :smile:
Формат вывода double без правых нулей
 
Тут нашёл обсуждение костылей (также по ссылке оттуда на англ.):
https://ru.stackoverflow.com/questions/1035307/С-Как-реализовать-вывод-вещественных-чисел-без-незнач...
Такое впечатление, что в общем случае надо самому в строке после snprintf удалять правые нули...
Формат вывода double без правых нулей
 
Заметил такие сюрпризы с форматом %g:
Число 10000.2345 выводится в виде 10000.2
Число 100000.2345 выводится в виде 100000
Формат %f работает без ошибок, но с правыми нулями.
Формат вывода double без правых нулей
 
В OnAllTrade получаю цену акции, а она там имеет тип double (в отличие от getQuoteLevel2, где она в виде строки). По какому сишному формату для printf можно вывести double без правых незначащих нулей, если неизвестно, сколько значащих цифр в дробной части? Формат %g это делает, есть ли там есть риск, что он может вывести число с экспонентой? Неужели в си это невозможно? Я с пом. поиска ответа не нашёл. А скрипт на Lua просто берёт и выводит это, как мне надо. Как он это делает, вручную удаляет в строке правые нули?
https://learn.microsoft.com/ru-ru/cpp/c-runtime-library/format-specification-syntax-printf-and-wprin...
Не запоминается глубина стакана в wnd файле
 
Сейчас попробовал через интерфейс поменять и запомнить, вижу, что в этом файле значение поменялось.
Не запоминается глубина стакана в wnd файле
 
Спасибо, вижу в этом файле параметр BOOKDEPTH, судя по его значению, это он. Он изменяется через интерфейс Квика?
Не запоминается глубина стакана в wnd файле
 
Сделайте, если можно, чтобы в wnd файле запоминался параметр Система/Настройки/Параметры инструментов/Глубина стакана.
Отключил сборку мусора, а его всё равно кто-то собирает...
 
Спасибо, теперь ясно, почему память под скрипт уменьшалась.

А если короткой строке что-то присвоить, то алгоритм сложнее: она, как я заметил, заносится в стринг буфер, и если какой-то строке присваивается короткое значение, то в этом стринг буфере ищется по хэшу такая же строка и, если найдена, оживляется, а если такая строка не находится, то тогда создаётся новая.
Отключил сборку мусора, а его всё равно кто-то собирает...
 
Вы имели в виду, что, когда я длинной строке присваиваю "", то она сразу удаляется (вызывается free()), минуя сборщик мусора, и пересоздаётся (c выделением 56 байтов через malloc())?
Отключил сборку мусора, а его всё равно кто-то собирает...
 
А разве не сборщик мусора вызывает Win API free(...) в т.ч. для строк?
Надо кое-что исправить в документации
 
Вернее, в документации хотели сказать, что возвращаются пустые таблицы, что тоже неверно.
Надо кое-что исправить в документации
 
Таблиц bid и offer в выдаче getQuoteLevel2 не было, как и сказано в документации.
Надо кое-что исправить в документации
 
Запросил стакан, на который не подписан, и получил bid_count/offer_count = "0.000000", а не "0", как сказано в документации. Век живи - век лечись...
Страницы: 1 2 3 4 5 6 7 8 След.
Наверх