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

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

Страницы: 1
Отладка QUIK 8.5
 
Некоторые брокеры стали раздавать версию 8.5 своим клиентам. Ну ведь очевидно, что версия нерабочая, почему не отозвать ее?

Цитата
_sk_ написал:
пусть ARQA попросит МосБиржу перенести релиз на срочном рынке с 8 июня 2020 года на более поздний срок.
Есть подозрение, что уже пересли. Тестовый полигон Мосбиржи откатили к предыдущей версии, видимо, у них самих какие-то проблемы возникли.
quik 8.5 ошибка
 
Гопода, это тема про ошибки в Квик 8.5, что весьма актуально. А вот обучение многопоточному программированию, думается, можно провести в другом месте.
quik 8.5 ошибка
 
Цитата
rst9 написал:
в том, что если квик завершит работу вашего скрипта, то про ваши потоки он ничего не знает, и если они не успели остановиться - то все, привет
Конечно, не знает. Скрипт сам долежен корректно завершать свои потоки, что он у меня успешно и делает.
Выбор Lua в качестве интерпретатора скриптов, на мой взгляд, было отличным решением разработчиков. Этот язык прекрасно подходит для задач, для которых он там используется. Раньше немного расстраивало, что версия языка использована устаревшая. Главное, что бы он работал без глюков. Ну и хотелось бы более глубокой интеграции.

В частности до сих пор (8.4) часто бывает невозможно заказать обезличенные сделки, если не открыта таблица обезличенных сделок. Почему-то этот косяк все никак не устранят.
quik 8.5 ошибка
 
Цитата
rst9 написал:
для чего вообще вы хотите запускать корутины как треды в lua?
Для выполнения работы, требующей блокировки нативного потока.

Цитата
rst9 написал:
это небезопасно и неуправляемо
В чем это заключается?

Цитата
rst9 написал:
не лучше ли использовать для этого разные скрипты?
По отдельной программе вместо нескольких потоков в одной? А если этим потокам нужно взаимодействовать? А если их количество меняется динамически?
quik 8.5 ошибка
 
Цитата
Sergey Gorokhov написал:
т.е. вы хотите сказать что при вызове именно такlua_callk(L, 2, 1, 0, NULL); и не работает?
Да, именно это я и хочу сказать. Не пойму, мне код что ли нужно с раскрытым макросом привести? Пожалуйста:

Код
extern "C" LUALIB_API int luaopen_mylib(lua_State *L)
{
  lua_getglobal(L, "message");
  lua_pushstring(L, "test1");
  lua_pushnumber(L, 1);
  lua_callk(L, 2, 1, 0, NULL);
  lua_pop(L, 1);

  lua_State *n = lua_newthread(L);

  lua_getglobal(n, "message");
  lua_pushstring(n, "test2");
  lua_pushnumber(n, 1);
  lua_callk(n, 2, 1, 0, NULL);
  lua_pop(n, 1);

  return 0;
}
quik 8.5 ошибка
 
Цитата
Sergey Gorokhov написал:
А если использовать именно lua_callk?
Тоже самое (lua_call это и есть lua_callk).
quik 8.5 ошибка
 
Цитата
Sergey Gorokhov написал:
Да именно и Вам у Вас в Вашем коде надо сделать также, либо использовать только lua_callk

Вот, пожалуйста:
Код
#define lua_call(L,n,r)   lua_callk(L, (n), (r), 0, NULL)

extern "C" LUALIB_API int luaopen_mylib(lua_State *L)
{
  lua_getglobal(L, "message");
  lua_pushstring(L, "test1");
  lua_pushnumber(L, 1);
  lua_call(L, 2, 1);
  lua_pop(L, 1);

  lua_State *n = lua_newthread(L);

  lua_getglobal(n, "message");
  lua_pushstring(n, "test2");
  lua_pushnumber(n, 1);
  lua_call(n, 2, 1);
  lua_pop(n, 1);

  return 0;
}
В Квик 8.4 выводится два сообщения, в Квик 8.5 только "test1".
quik 8.5 ошибка
 
Цитата
Sergey Gorokhov написал:
В Lua машине 5.3.5 нет такой функции как lua_call (). Есть её аналог lua_callk.Используйте ее.Либо добавьте в свой код что то вроде этого:#define lua_call(L,n,r) lua_callk(L, (n), ®, 0, NULL)

Именно так и сделано в штатном файле lua.h из Lua 5.3.5 - lua_call является вызовом lua_callk
Вот пример для воспроизведения:

Код
extern "C" LUALIB_API int luaopen_mylib(lua_State *L)
{
  lua_getglobal(L, "message");
  lua_pushstring(L, "test1");
  lua_pushnumber(L, 1);
  lua_call(L, 2, 1); // lua_callk(n, 2, 1, 0, NULL);
  lua_pop(L, 1);

  lua_State *n = lua_newthread(L);

  lua_getglobal(n, "message");
  lua_pushstring(n, "test2");
  lua_pushnumber(n, 1);
  lua_call(n, 2, 1); // lua_callk(n, 2, 1, 0, NULL);
  lua_pop(n, 1);

  return 0;
}

В Квик 8.4 выводится два сообщения, в Квик 8.5 только "test1".
quik 8.5 ошибка
 
Цитата
Anton написал:
Вообще-то с lua5.1.dll от квика, насчет qlua.dll кто-то дезу пустил и так и пошло. Впрочем, работало тоже.
Это была инфа от разработчиков, да и в хелпе по QLUA в разделе "Потокобезопасные функции для работы с таблицами Lua" ссылка именно на qlua.dll.

Цитата
Anton написал:
Проверил - аналогично.
Спасибо, значит что-то уж больно сильно изменилось.

Цитата
rst9 написал:
она не имеет ничего общего с, поднятым мной, вопросом арке по поводу конкретного бага.
Да вот проблема похоже во вновь создаваемых состояниях. Так что они с одного поля.
quik 8.5 ошибка
 
Господа, а у вас вызов функций Квика через lua_call из своих потоков с новым состоянием вообще работет?

Создаю новое состояние через lua_newthread(L), передаю его с свой поток, созданный через _beginthreadex, из этого потока вызываю функцию через lua_call. И ничего не проиходит - на верхушке стека остается название функции. Если вызывать lua_call из потоков Квика (с его состоянием), все в порядке.

Раньше свою длл нужно было с qlua.dll линковать, как раз что-то с потоками было связано. Теперь в ней нет функций, прилинковал свою длл к lua53.dll.
Trans2QuikAPI_1.3_x64 + QUIK 7.9.1.1 = TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND, Не удается добиться подключения к QUIK в варианте Trans2QuikAPI_1.3_x64 + QUIK 7.9.1.1
 
Цитата
Mack написал:
Где можно порыться в поисках решения?
В старых версиях TRANS2QUIK в параметре lpcstrConnectionParamsString должен быть указан не путь к папке, где лежат файлы терминала, а путь к его рабочей папке (working directory) - той, из которой он был запущен. Часто бывает, что это не одно и тоже.
TransId не переносится через ночь., TransId не переносится через ночь.
 
Кстати, а чего, у стоп-заявок TransId за ночь тоже теряется? (не знаю, т.к. не пользуюсь ими)
TransId не переносится через ночь., TransId не переносится через ночь.
 
Цитата
Дмитрий написал:
Стоп-заявки не снимаются.
Скажу больше: стоп-заявки на Московской Бирже не просто не снимаются, а их там вообще не существует. Невозможно снять то, чего не существует ;)
А то, что у вас в терминале есть какая-то сущность с названием "стоп-заявка" - это исключительно заслуга разработчиков Квика ;)
TransId не переносится через ночь., TransId не переносится через ночь.
 
Цитата
Stanislav Tvorogov написал:
Предыдущее сообщение было относительно фондового рынка.
Для фондового рынка (спота МБ) данная тема неприменима вообще, т.к. заявки там ночью не выживают - их снимает биржа и повторно уже не выставляет, в отличие от того, что происходит на срочке.

На срочном же рынке при смене сессии старые заявки снимаются в клиринг, после чего выставляются новые с точно такими же параметрами, но новыми номерами. За ночь при этом с заявками на бирже не происходит ничего. Корень проблемы в том, что ваши разработчики сделали предположение о том, что смена сессии на бирже происходит ночью. Это предположение для рынка FORTS является неверным. Это означает, что ваше ПО не до конца поддерживает работу на данной торговой площадке. А т.к. вы заявляете полную поддержку FORTS этим ПО, это должно быть не регистрация "пожелания пользователя", а регистрация тикета на исправление бага.
TransId не переносится через ночь., TransId не переносится через ночь.
 
Так торговая сессия за ночь не меняется вообще-то. Торговая сессия меняется только в клиринг в 19:00. Присоединяюсь к пожеланию иметь возможность полноценно использовать TransId, как это сделано в других торговых платформах. К сведению, поле ext_id в заявках Plaza2 и MICEX остается даже при переносе заявки на реальную другую сессию (когда номер заявки меняется).
Обезличенные сделки за прошлые торговые сессии
 
По некоторым инструментам данные можно брать здесь: http://qsh.qscalp.ru/
Там данные в формате qsh, их можно отконвертировать в текст.
Расчёт доступного количества, Не расчитывает доступное количество для покупки/продажи
 
Чтобы в форме ввода заявки рассчитывалось допустимое количество, необходимо указать правильный код клиента. По умолчанию данное поле обычно пустое.
ParamRequest vs CreateDataSource
 
Цитата
Egor Zaytsev написал:
реализация пожелания признана потенциально целесообразной
Это прекрасно :) Главное только, чтобы она заказывала обезличенные сделки без необходимости открытия таблицы обезличенных сделок. (CreateDataSource этого не делает, если Квик запущен без *.dat файлов - тикер есть, но не помню).
ParamRequest vs CreateDataSource
 
Понял, спасибо, Михаил.
Теперь бы еще такую же для обезличенных сделок :)
ParamRequest vs CreateDataSource
 
Получается, единственное отличие в наличии автоматической отписки после останова скрипта? (после CreateDataSource терминал сам отписку не выполняет)
ParamRequest vs CreateDataSource
 
Подскажите, в чем практическое отличие использования функции ParamRequest от CreateDataSource для заказа данных для OnParam в 7.1? Если я правильно понял, она попрежнему не может заказать данные, если они не выбраны "Заказ данных - Поток котировок"?
getQuoteLevel2, Приведение данных к корректному виду
 
Цитата
Раз функции нет в документации никто, не даст Вам гарантии что эта функция завтра не исчезнет.
Ну в общем случае это так да, в связи с этим я и задал свой вопрос. Вы не могли бы уточнить его у своих коллег?
getQuoteLevel2, Приведение данных к корректному виду
 
Цитата
Эксперименты показывают, что с 6.15.0
Спасибо за исследование!


Sergey Gorokhov, а вы могли бы как-то прокомментировать эту функцию? Почему она не документирована и можно ли использовать ее в своем софте без опаски, что в одной из следующих версиях Квика она не исчезнет и не изменит свое поведение?
getQuoteLevel2, Приведение данных к корректному виду
 
А с какой версии Квика в нем есть getQuoteLevel2Ex?
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
 
Сергей, если насчет дампов вы писали мне, то я их уже присылал (CQ01744854), получил ответ, что проблема у вас не воспроизводится. Как только у меня будет какая-либо дополнительная информация, я ее сразу вам пришлю.

Возможно, дампы от топикстартера дадут новую информацию. Полагаю, если немного изменить окружение работы Квика, он будет падать, а не зависать.
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
 
У меня похожая проблема, только Квик не зависает, а падает иногда с дампом, иногда без. Происходит при создании нового Windows+Lua потока (через С код). От ОС не зависит. К сожалению, возникает не регулярно, поэтому провести подробный анализ не удается. Причем падение похоже происходит при вызове _beginthread, т.е. вообще до обращения к Lua.
Длина поля brokerref в таблице ЗАЯВКИ, Превышен размер поля ввода
 
Длина этого поля - 20 символов. Ранее в нем можно было указывать только свой комментарий вида "//комментарий" - сервер Квик сам подставлял туда код клиента. Но теперь у некоторых брокеров (Финам, прежде всего) это перестало работать. Несмотря на то, что общая длина код клиента + комментарий укладывается в эту длину, сервер сообщает о том, что длина превышена. Необходимо самому указать код клиента перед комментарием.

Т.е. "//qwe" - будет ошибка о превышении длины, "код клиента//qwe" - заявка выставится нормально. Я знаю, что подставлять код клинта или нет - это настройка сервера. Но, полагаю, сообщение об ошибке при этом было бы другое. Может разработчики Квика это прокомментируют?
Кросплатформенный connector
 
Цитата
Trufanov Alexander пишет:
Но в отличие от этих @!$#, не пихать в нее зависимости от виндового апи
А я думал, что я один придираюсь :D
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
XXM,

Код
if(TradeId>lastTradeId)
{
  lastTradeId = TradeId;
  // some work...
}

А зачем вам база?
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
О, в сделках появился trans_id? Здорово. Хотя высылать из-за него сделку повторно кажется странным: все биржи поддерживают числовой тег в заявках, который транслируется и для сделок. При этом нет необходимости искать соответствие сделки с trans_id на сервере.

OnTrade несколько раз - это, конечно, прикольно :) Я вот как чувствовал еще много лет назад, и изначально сделал проверку на возрастанаие номера сделки.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Вы могли бы развернуто пояснить, при каких условиях/событиях OnTrade придет несколько раз?
Шрифт всего уменьшить можно?
 
Впрочем, я неверно выразился. Нужно привлечь сюда дизайнера, т.к. его здесь вообще не было. Ни один дизайнер не будет использовать разные шрифты одного типа (без зачечек) на одной странице.

Для самих сообщений лучше сделать более плотный шрифт, такой же, как в форме ввода например. Столько растянутый читать не очень удобно (точнее неудобно).

И, повторюсь, уберите эту жуткую синию полоску снизу, пожалуйста!
Шрифт всего уменьшить можно?
 
Присоединюсь насчет шрифта - все же нужно дизайнеру отработать получку. Старый форум был хоть и морально уже стар, но по дизанерски оформлен отлично. Здесь же похоже дизайнера не было вообще.

И еще, пожалуйста, уберите эту ужасную сининюю полоску "Наверх" снизу!
Страницы: 1
Наверх