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

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

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 42 След.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Цитата
Roman Azarov написал:
Не совсем понимаем, почему данный вопрос адресован нам. Никто не утверждал, что брокер в чем-то виноват.
Не совсем понятно, для чего привлекать брокера, когда ошибка в вашем серверном ПО QUIK, не связанная с каким либо конкретным брокером.

Цитата
Roman Azarov написал:
Присылайте скриншоты и номера заявок, будем разбираться.
Это уже без меня. Я не могу быть заинтересован в исправлении ошибок вашего ПО больше, чем вы сами.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Цитата
swerg написал:
не позволяет вам узнать актуальные сейчас вы видите данные в терминале или нет.
Про время передачи данных по каналам связи ведь все в курсе? Надеюсь вы не это хотите обсудить, а вопрос:
Цитата
Старатель написал:
Но пока сообщение о подписке дойдёт до сервера, тот будет слать раннее заказанные параметры (без Р).
В результате, вызвав getParamEx2 в коллбэке OnParam(), мы получим старое значение параметра Р, сохранённое в кеше на момент времени Т0.
Если последнее, то давайте начнём хотя бы с сообщения #19
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Так-то не брокер виноват?

Цитата
Старатель написал:
В заявках, снятых в результате транзакций "MOVE_ORDERS" на FORTS и "Изменение заявки" на ФР, UID снявшего не заполняется в любом случае. Наблюдается как на демо, так и на боевом.
Ошибку в серверном ПО QUIK сами найдёте?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Владимир, как я понял, у вас всегда открыта ТТТ, и в неё добавлены все интересующие вас инструменты и параметры. И вы принципиально не пользуетесь ParamRequest, которая в таком случае и не требуется.
Эта же тема для истинных ценителей автоматизации, у которых в терминале открыто только одно окно: Доступные скрипты, ну ещё могут быть окна, созданные скриптами.

Цитата
Владимир написал:
за это время котировка ТОЖЕ может поменяться
Имелось ввиду, что пока трейдер примет решение, котировка обновится до актуальной, а не то, что вы подумали.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Цитата
swerg написал:
Но в скриптах почему-то неактуальность цифры становится принципиальной. Но почему?
Разное время реакции. Пока трейдер примет решение, котировка поменяется. А скрипт: получил котировку - выполнил действие.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Изменить версию Lua с 5.4.1 до 5.4.2
 
На самом деле, при использовании в боевом скрипте внутри цикла pairs, ещё много операций, а иначе зачем он нужен?  :lol: Типа:
Код
for sec_code, class_code in pairs(p) do
  p[sec_code] = nil
  local last = tonumber(getParamEx2(class_code, sec_code, "LAST"))
  ...
end
И тогда ошибка возникает практически сразу (без форсирования).
В таком случае, чтобы избежать ошибки, таблицу лучше обходить через next.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Цитата
Sergey Gorokhov написал:
Для понимания что заказанный параметр начал ехать нужно ждать коллбэк OnParam(), после чего вызывать getParamEx2
Даже в таком варианте вместо актуального значения можно получить не пойми что.
Пример: в момент времени Т0 клиент был подписан на получение нескольких параметров по бумаге, затем подписка на параметр Р была закрыта.
Через несколько часов в момент времени Т1 скрипт снова подписывается на параметр Р. Но пока сообщение о подписке дойдёт до сервера, тот будет слать раннее заказанные параметры (без Р).
В результате, вызвав getParamEx2 в коллбэке OnParam(), мы получим старое значение параметра Р, сохранённое в кеше на момент времени Т0.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Подкиньте идею
 
Цитата
Старатель написал:
Цитата
Nikolay написал:
Если источник-приемник один, то достаточно в источнике открыть файл в режиме записи, а в приемнике в режиме чтения и просто проверять новые данные в этом файле через read("*l").
Можно и так. Тогда отпадает необходимость в открытии/зактытии/удалении файлов, что затратно.
При частой записи данных файл обмена может сильно разрастись. В этом случае есть сомнения в скорости сброса данных на диск.
Маленькие файлы кешируются в памяти операционной системой, а большие? Не получится ли  так, что каждый новый flush будет дольше предыдущего?

Цитата
Игорь Б написал:
Я делаю так же, только с одним файлом. Передатчик создает файл и пишет туда инфу. Приемник смотрит наличие этого файла. Для него это флаг, что можно читать свежую инфу. Он (приемник) ее читает и удаляет файл. Для передатчика отсутствие файла означает, что файл прочитан и можно создавать файл для передачи новой инфы. Если это и хуже варианта с двумя файлами, то интересно чем?  
Думаю, не хуже. Но в обоих случаях при одновременном открытии файла обмена несколькими источниками гипотетически часть данных может быть потеряна.

Цитата
Владимир написал:
файл - один, но для каждого скрипта выделяется собственное пространство (фиксированного объёма). Далее они читают и пишут только в свои зоны, а общий диспетчер (который эту таблицу формирует) ставит флаги "прочитано, можно писать следующую порцию".
Вариант, заслуживающий внимания.

Ещё вариант: читать/писать под локом. Файл один, открывается один раз, при остановке скрипта закрывается. Данные записываются в режиме изменения в начало файла, сообщение добивается нулями до фиксированной длины.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Подкиньте идею
 
Цитата
Nikolay написал:
Конечно, все это для обмена большими объемами и несколькими источниками-потребителями. Если данных мало и они редки, то все это излишне.
ТС задал вопрос по выводу данных в общую визуальную таблицу. Врядли там большие объёмы данных.

Цитата
Nikolay написал:
Если пара одна, то это приведет к тому, что все будут ждать пока он освободится.
А в других перечисленных вами вариантах ждать не будут?

Цитата
Nikolay написал:
Если источник-приемник один, то достаточно в источнике открыть файл в режиме записи, а в приемнике в режиме чтения и просто проверять новые данные в этом файле через read("*l").
Можно и так. Тогда отпадает необходимость в открытии/зактытии/удалении файлов, что затратно.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Подкиньте идею
 
Цитата
Nikolay написал:
Это надо для каждый пары источник-приемник создавать пару файлов. Как только несколько писателей, с двумя файлами может быть блокировка.
Второй файл как раз служит для писателей индикатором, что первый файл занят, и запись не возможна.
Как только приёмник прочитает данные, он удаляет 2-й файл, что сигнализирует о возможности записи.
Т.е. организуются синхронные запись/чтение.

Кстати, ни разу не видел, блокировок файлов, одновременно открытых несколькими Lua-скриптами.
Если файл открыт другим приложением, то, да, было.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Подкиньте идею
 
Цитата
Kolossi написал:
Номер окна выдает каждый раз следующий.16-17-18-19... и так по порядку каждый раз при убиении и запуске скрипта.
Так и есть. При перезапуске скрипта идентификаторы новых окон увеличиваются.

Цитата
Nikolay написал:
Вариант 3 - файлы. Но взаимные блокировки будет проблемой.
Вот тут пример организации обмена с двумя файлами: 1-й файл для передачи данных, 2-й - пустой файл, служит флагом для индикации готовности данных к считыванию.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Подкиньте идею
 
Цитата
s_mike@rambler.ru написал:
Имея номер окна, можно писать в него из любых скриптов.
Не знаю, может у меня версия квика какая-то другая. Но нумерация окон не сквозная, у каждого скрипта своя, начинающаяся с 1.
Т.е., идентификаторы окон разных скриптов могут совпадать. И писать в окно другого скрипта не получается.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как поставить заявку на LUA с переносом
 
Сохраните Lua-скрипт в кодировке ANSI (Win-1251)
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Самый быстрый способ получить данные по инструменту
 
Цитата
Алексей Злобин написал:
если мне достаточно цену сделки определить...то какой метод более  эффективный?
Зависит от контекста.
Если не нужны цены каждой сделки, то эффективней - getParamEx2
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Самый быстрый способ получить данные по инструменту
 
Скрытый текст

Цитата
Алексей Злобин написал:
нужна лучшая цена спроса/предложения
Цитата
Алексей Злобин написал:
Какой способ более эффективный?
Тот, который даёт нужную информацию - getParamEx2.
В OnAllTrade спроса/предложения нет.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Самый быстрый способ получить данные по инструменту
 
ParamRequest только заказывает получение параметров с сервера.
Сами значения параметров можно получить в getParamEx2. Т.ч., 3 + 1 - это один способ.
Цитата
Алексей Злобин написал:
нужна лучшая цена спроса/предложения
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Самый быстрый способ получить данные по инструменту
 
ParamRequest только заказывает получение параметров с сервера.
Сами значения параметров можно получить в getParamEx2. Т.ч., 3 + 1 - это один способ.
Цитата
Алексей Злобин написал:
нужна лучшая цена спроса/предложения
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Самый быстрый способ получить данные по инструменту
 
ParamRequest только заказывает получение параметров с сервера.
Сами значения параметров можно получить в getParamEx2. Т.ч., 3 + 1 - это один способ.
Цитата
Алексей Злобин написал:
нужна лучшая цена спроса/предложения
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Перестают работать события SetTableNotificationCallback
 
При нажатии клавиш с кодами 107 (+), 109 (-), 111 (/) на цифровом блоке клавиатуры не работают события QTABLE_CHAR и QTABLE_VKEY.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Изменить версию Lua с 5.4.1 до 5.4.2
 
Чтобы обход таблицы был более корректным, изменим тестовый скрипт, так, чтобы добавление и удаление полей таблицы осуществлялось в одном потоке:
Скрытый текст

Ошибка "invalid key to 'next'" никуда не делась.
Для форсирования: перезаказать все обезличенные сделки.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Изменить версию Lua с 5.4.1 до 5.4.2
 
Цитата
Roman Azarov написал:
С некоторой вероятностью может появиться следующая ошибка?
Верно

Цитата
Roman Azarov написал:
У себя подобного за целый день не увидели
Можете форсировать события:
Скрытый текст
и сделать перезаказ всех обезличенных сделок.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Изменить версию Lua с 5.4.1 до 5.4.2
 
В Lua 5.3 и Lua 5.4:
Цитата
invalid key to 'next'
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Изменить версию Lua с 5.4.1 до 5.4.2
 
Существует ненулевая вероятность, что сборщик придёт как раз во время обхода таблицы в одном из потоков.
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Кривые шибки в QLua
 
QUIK v.8.11.0.66, Lua 5.4
Однократная ошибка
Цитата
attempt to call a nil value
в цикле for in pairs в main:
Код
local T = {}

function main()

    while run do
      ...
        for k, v in pairs(T) do  -- тут ошибка
          ...
        end
      ...
      sleep(1)
    end

end
stack traceback:
Цитата
in for iterator 'for iterator'

На момент возникновения ошибки таблица T была пуста: за время работы (3 часа) робота в таблицу элементы не добавлялись.
Написать тестовый скрипт для воспроизведения или повторить ошибку не удалось.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Цитата
swerg написал:
Согласитесь, то, что речь про демо-сервер
Да, как оказалось, отсутствие canceled_uid в заявках для "KILL_ORDER" относится к только демо-серверу.
В боевом квике все заявки без canceled_uid были сняты "MOVE_ORDERS".
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Roman Azarov,
В заявках, снятых транзакцией "KILL_ORDER", не заполняется UID снявшего, если транзакция снята вскоре после выставления. В 8.11 наблюдается в junior.
В заявках, снятых в результате транзакций "MOVE_ORDERS" на FORTS и "Изменение заявки" на ФР, UID снявшего не заполняется в любом случае. Наблюдается как на демо, так и на боевом.

Будете ли вы это исправлять в своём ПО - это ваше решение.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Хотя инициатором "MOVE_ORDERS" был пользователь. Иногда, не сразу разберёшь...
Логичнее всё же проставлять canceled_uid
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Цитата
Старатель написал:
Для "MOVE_ORDERS" актуально.
Видимо, canceled_uid = 0 - торговая система.
Вопрос можно пока закрывать, спасибо.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
В боевом квике v.8.11 для "KILL_ORDER" вопрос снимается.
Для "MOVE_ORDERS" актуально.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Отладка QUIK 8.11
 
Цитата
Anton написал:
Так-то компилятор (одного файла) выглядит вот так и запускается в самом квике
Скомпилил библиотеку в 4к строк данным скриптом и в luac54.exe по ссылке выше. Результаты совпадают до байта.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
И ещё: у снятой заявки в результате транзакции "MOVE_ORDERS" вообще не заполняется UID снявшего.

Цитата
Roman Azarov написал:
Действительно наблюдаем подобное поведение.
Я не понял: наблюдаете или нет? Запустите предложенный скрипт на своём демо.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Метки
 
Цитата
Andrey Bezrukov написал:
Зарегистрировали пожелание на возврат возможности изменения прозрачности меток и их фона из окна настроек метки.
У программиста всегда будет работа
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Индикатор объема Volume, Корректность индикатора под сомнением
 
Цитата
Евгений написал:
растет цена или падает на свече тоже видно на свечках
На свече цены. Это надо ещё виртуальную линию провести от объёма к свече цены, и попасть в правильную. При мелком масштабе - не очевидно.

Цитата
Евгений написал:
сигнал индикатора объема в том и состоит чтобы видеть быстро скачки объемов
Скачки объёмов сразу видно, и цветовая индикация тут не помощник, имхо.
Ну раскрасили вы объёмы по росту-падению. Тут объём вырос на два лота, тут - упал, какая разница?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
swerg,
canceled_uid - это UID снявшего заявку. Смотреть можно в скрипте или в визуальной таблице заявок.

Цитата
Roman Azarov написал:
Уточните, пожалуйста, версию терминала, на котором была обнаружена проблема.
Версия любая, вплоть до 8.11
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Цитата
Anton написал:
Что будет, если в OnTransReply строку run = nil перенести после sendTransaction?
Можно эту строку вообще убрать, без разницы.

Цитата
Anton написал:
Зе пойнт что уже во время sendTransaction в колбеке скрипт мертв и что там серверу на самом деле посылается - загадка.
KILL_ORDER посылается, раз заявка снята. А заполнение полей в заявке - это уже дело сервера.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Цитата
Anton написал:
мейн завершается раньше sendTransaction из колбека
Как это должно повлиять на заполнение поля сервером?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Индикатор объема Volume, Корректность индикатора под сомнением
 
Цитата
Евгений написал:
При присвоении индикатору объема Volume цветовых настроек с учетом цвета для роста и падения учитывается рост и падение свечи
Вроде, норм, так и должно быть.

Цитата
Евгений написал:
Должно быть так: Цвет столбца гистограммы меняется в зависимости от предыдущего объема
Больше, меньше и так видно
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
У снятой заявки не заполняется поле canceled_uid, если заявка снята вскоре после выставления
 
Пример
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как определить абсолютный путь к исполняемому файлу lua?
 
Цитата
TGB написал:
вариант с локальным объявлением  gcrunner
Так __gc вызывается до OnInit
Скрытый текст

Убираем какую-нибудь строку, например
Код
file:write("OnInit\n")
и срабатывает при вызове collectgarbage. Как-то так.

Цитата
TGB написал:
вариант с локальным объявлением  gcrunner  не работает в QLua 5.3.5 для финализации скрипта.
Без collectgarbage сработает и для финализации.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как определить абсолютный путь к исполняемому файлу lua?
 
Цитата
TGB написал:
Цитата
Старатель написал:
Цитата TGB  написал:-- collectgarbage ()  ---  Если эту строку раскомментировать и при этом local gcrunner = {}, то при запуске collectgarbage () сработает __gc.
Вроде, не срабатывает.
  Здравствуйте!
При этом необходимо, чтобы gcrunner был объявлен локальным:       local gcrunner = {}
__gc срабатывает до вызова collectgarbage, возможно при автоматической сборке.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как определить абсолютный путь к исполняемому файлу lua?
 
Цитата
TGB написал:
-- collectgarbage ()  ---  Если эту строку раскомментировать и при этом local gcrunner = {}, то при запуске collectgarbage () сработает __gc.
Вроде, не срабатывает.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Не работают горячие клавиши
 
При активном окне "Доступные скрипты" не работают никакие горячие клавиши.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Отладка QUIK 8.11
 
Цитата
Старатель написал:
Очень похоже
Хотя, может, из другой оперы...
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Отладка QUIK 8.11
 
Цитата
Евгений написал:
Key removed from a table during traversal may not be accepted by 'next'.
Очень похоже:
https://forum.quik.ru/messages/forum10/message49163/topic5802/#message49163

Цитата
TGB написал:
при существующей архитектуре обработки событий в QLua, уборка мусора в нем должна быть потокобезопасной
Наверное, придётся согласиться ))
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
На демо сервере junior quik не передается таблица firms при смене пользователя
 
Цитата
Nikolay написал:
По какому признаку мне понять, что пока рано идти и смотреть позицию в таблице futures_client_holding?
Цитата
Andrey Bezrukov написал:
можем зарегистрировать пожелание на индикацию в скрипте о том, что необходимые для отображения таблиц данные были получены с сервера после очистки

Может, будет полезно добавить трансляцию таблицы sys_events со шлюза?
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Highlight с дробным timeout, не работает, но возвращает true
 
Было бы неплохо в руководстве указывать тип данных, как для передаваемых параметров, так и возвращаемых, не number, а dooble или integer, раз уж теперь это важно.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Отладка QUIK 8.11
 
Цитата
Александр написал:
Как понять в каком окружении запущен скрипт?
_VERSION
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Отладка QUIK 8.11
 
После этой ошибки при закрытии QUIK (крестиком) с остановленными скриптами - падение с дампом
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 42 След.
Наверх