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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 46 След.
Отладка QUIK 9.1
 
Цитата
Nikolay написал:
команда пользователя по его закрытию
Чаще всего это - QTABLE_CLOSE, тот же самый эвент, что и при замене фьючерсов, тот же что и при закрытии терминала.
Надо делать так, как надо. А как не надо - делать не надо.
8.13 vs 9.1
 
Цитата
Старатель написал:
если открыто два одинаковых (инструмент, таймфрейм) графика на диаграмме (или через CreateDataSource)
Если первый график отрыт на диаграмме или через CreateDataSource, то индикатор, переставляющий метки на втором графике (с тем же инструментом и таймфреймом), теряет свои метки.
Надо делать так, как надо. А как не надо - делать не надо.
8.13 vs 9.1
 
Есть такой баг (CQ01954637), добавленный после v.7.5:
если открыто два одинаковых (инструмент, таймфрейм) графика на диаграмме (или через CreateDataSource), то на втором (тот, который открыт вторым) при попытке изменить метку через SetLabelParams, индикатор теряет свою метку.
Возможно, есть связь с одной из ваших проблем.
Надо делать так, как надо. А как не надо - делать не надо.
Беззвучный режим
 
Что такое "Беззвучный режим" в настройках "Звуки"?
При установленной галке "Беззвучный режим" звуковые сигналы продолжают воспроизводиться.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
вариант нейтрализации этой ошибки на уровне разработчика скриптов (все же, требующий нетривиального анализа и, возможно, дополнительного изменения кода скрипта при каждой его редакции)
Часто ли вам требовалось использовать этот вариант?

Цитата
TGB написал:
почему вы «топите»
Цитата
Старатель написал:
Это позволяет скриптеру писать байткод-циклы (в текущей версии QLua 5.3/5.4), выполняющиеся атомарно (читай потокобезопасно).
При реализации вашего пожелания на уровне QLua скриптер лишится такой возможности.

Я не против, если скриптер будет иметь контроль, например заданием переменной из скрипта: если счетчик задан, то снимать лок, через заданное количество циклов. Если не задан, то - без изменений. Как то так.
Надо делать так, как надо. А как не надо - делать не надо.
Quik_9.1.0 не загружается
 
Цитата
Старатель написал:
Если хост не отвечает (буквально), то клиент может бесконечно долго ждать ответа.
Уточнение: на этапе "Идет установление связи с информационным сервером".
Надо делать так, как надо. А как не надо - делать не надо.
Quik_9.1.0 не загружается
 
Цитата
Vladimir Ivanov написал:
По второй проблеме
Если хост не отвечает (буквально), то клиент может бесконечно долго ждать ответа. Про таймаут он не слышал.
Думаю "ноги растут" отсюда.
Надо делать так, как надо. А как не надо - делать не надо.
При снятии заявки перемерт account пустой
 
Тогда правильно ли я понимаю, что первичными ключами для таблиц являются:
для заявок: order_num, class_code
для сделок: trade_num, order_num, sec_code
для обезличенных сделок: trade_num, sec_code, class_code
?
Надо делать так, как надо. А как не надо - делать не надо.
При снятии заявки перемерт account пустой
 
Я так понял, что номера обезличенных сделок могут совпадать в разрезе класса.
Надо делать так, как надо. А как не надо - делать не надо.
При снятии заявки перемерт account пустой
 
Цитата
Sergey Gorokhov написал:
номер обезличенной сделки может быть один на разных инструментах одного класса
Так в разрезе класса или инструмента?
Надо делать так, как надо. А как не надо - делать не надо.
При снятии заявки перемерт account пустой
 
Цитата
Sergey Gorokhov написал:
номер в разрезе инструмента может совпадать только на обезличенных сделках
Поясните.
Надо делать так, как надо. А как не надо - делать не надо.
Кривые шибки в QLua
 
QUIK 9.1.0.63, Lua 5.4
Сегодня в коде (в main)
Код
local hour = 0+os.date('%H')
выскочила такая ошибка:
Цитата
attempt to perform arithmetic on a nil value
Цитата
stack traceback:
[C]: in metamethod 'add'
Надо делать так, как надо. А как не надо - делать не надо.
При снятии заявки перемерт account пустой
 
Цитата
Sergey Gorokhov написал:
На некоторых рынках есть классы в которых нумерация заявок идет в разрезе инструментов, а не классов.
Т.е. есть ситуации когда у разных инструментов одного класса номера заявок могут совпадать. И при этом это совершенно разные заявки

Получается для корректной работы функции getOrderByNumber нужно было добавить ещё код бумаги.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
Вопрос по существу может быть таким: «упрощают ли предлагаемые средства разработки программ жизнь пользователя или нет? И в какой степени?».

По моему мнению все "нововведения", которые удаляют или затрудняют работу текущего функционала, только ухудшают "жизнь пользователя".
https://forum.quik.ru/messages/forum10/message40996/topic4921
https://forum.quik.ru/messages/forum13/message40352/topic4830
Кому-то захотелось так сделать, потому что он посчитал, что ему лично так будет удобно. Программисты выполнили его хотелку, и в результате ухудшили жизнь другим.
Если что-то радикально менять, то это должен быть опциональный вариант.
Надо делать так, как надо. А как не надо - делать не надо.
Quik_9.1.0 не загружается
 
Цитата
Дмитрий написал:
2) Есть еще проблема, которая тянется с предыдущих версий. При запущенном терминале если долго не пользоваться компом и при уходе его в какой-либо из режимов энергосбережения (например Гибернация), то при последующем выводе из режима Квик либо оказывается подключенным к серверу, либо нет. Если нет, то висит окно: "Net error: Удаленный хост принудительно разорвал существующее подключение". При этом в меню программы вместо "Установить соединение" остается доступным только вариант "Разорвать соединение" (словно оно по прежнему еще установлено). И никаких вариантов кроме как перезагрузить Квик нет.
Но это еще не все. Кликнув на закрыть Квик, имеем исчезнувшее окно программы. Но в Диспетчере задач Win10 по прежнему продолжает висеть сколь угодно долго процесс "Рабочее место информационно-торговой....". И если его принудительно не завершить, то Квик больше не запустить.

Старая проблема. В информационном окне в состоянии соединения пишет: "устанавливается".
Но раньше, вроде, можно было хоть вручную подключится.
Теперь, если нажать кнопку "Разорвать соединение", то кнопки "Установить соединение", "Разорвать соединение" становятся неактивными.
Если попытаться открыть какое-либо окно, то QUIK повесится.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
вставляй прокладки для защиты от блокировок

Какие ограничения накладывает отсутствие "Счетчик_для_переключения_State"?
Надо делать так, как надо. А как не надо - делать не надо.
Не могу ввести цену с десятичной точкой (запятой) в окне "Ввод заявки"
 
По скринам: у вас разделитель разрядов такой же, как и разделитель дробной части.
Надо делать так, как надо. А как не надо - делать не надо.
Синхронизация потоков
 
Цитата
Sergey написал:
2 поток удалил запись с индексом 3
1 поток удаляет запись с индексом 5 - это уже не та запись, которую он нашел - это проблема.

Если оба потока удаляют записи в таблице, то да, нужна синхронизация.
Надо делать так, как надо. А как не надо - делать не надо.
Синхронизация потоков
 
Цитата
Sergey написал:
В нее добавляются и из нее удаляются элементы в потоке main и колбеках функциями:
Код
table.sremove (Trades, i) 
table.sinsert (Trades, trade)  

Проблема в том, что перед добавлением/удалинием элементов происходит перебор элементов таблицы в цикле для поиска нужного индекса. Если нужный элемент найден, а другой поток удалит элемент с меньшим индексом, то индексы сдвинутся и получится ерунда, т.е. нужно синхронизировать потоки.

Поскольку вы используете потокобезопасные функции, то добавление элемента в конец таблицы (именно такая запись без указания индекса table.sinsert(Trades, trade)) не влечет каких-то неприятных последствий.
Надо делать так, как надо. А как не надо - делать не надо.
Путь к скриптам Lua
 
Цитата
BlaZed написал:
Цитата
TGB написал:
Функция опреlеления папки запускаемого скрипта:
Аа чем getScriptPath() не устраивает?

Если файл запущен через dofile, то не покажет его расположение.
Надо делать так, как надо. А как не надо - делать не надо.
Debug function name
 
Если функция передается в качестве аргумента, то в debug.getinfo(1).name будет имя не самой функции, а имя аргумента.

Код
local function local_comparator(lhs, rhs)
   local t = debug.getinfo(1)
   message('local_comparator name is ' .. (t.name or 'nil'))
   return true
end

function f(arg) arg() end

f(local_comparator) -- MSG: local_comparator name is arg

Есть способ узнать имя функции?
Надо делать так, как надо. А как не надо - делать не надо.
Слои индикаторов на графике цены, Нелогичное отобраджение подсказки при наложении индикатора на график цены
 
Порядок отображения слоев:

Никак не могу привыкнуть  :what:
Надо делать так, как надо. А как не надо - делать не надо.
Получение признака "Субординированный инструмент" в lua
 
Цитата
Андрей написал:
обеспечьте надежный способ отличать, заполнено поле уже или нет. Незаполненное поле не должно иметь значение, валидное для заполненного.
Цитата
Андрей написал:
для незаполненных тогда просто не возвращать поле (=nil).
https://forum.quik.ru/messages/forum10/message10259/topic1082/#message10259
Надо делать так, как надо. А как не надо - делать не надо.
Написание автономного бота
 
Как об стенку горох.

Sergey Gorokhov, надёжный способ вам предложили, отрицать очевидное бессмысленно.
Теперь вы врёте, всячески изворачиваетесь и бросаетесь из крайности в крайность, пытаясь оправдать своё безделие.

Цитата
Sergey Gorokhov написал:
сам терминал подключен к серверу тоже до начала торгов
Так это существенное ограничение. А в 9-10 часов теперь подключать нельзя?

Тогда уж указывайте в Руководстве "идеальные условия", для которых предназначен QLua, и соответствующие ограничения.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
Бывают ситуации зависания в QLua, когда основной поток обслуживания колбеков всех скриптов пользователя, а также таблиц QUIK (это не таблицы Lua), блокируется выполнением  длинного цикла пользовательской программы на «чистом» Lua, в котором нет ни вызова seep ни вызова других C-функций.

Держите и вы от меня "шайбу":
Цитата
Старатель написал:
чтобы не было зависаний, можно вставить внутрь цикла любую с-функцию (не обязательно sleep). Причём, вставлять можно не на каждую итерацию, а через заданное количество циклов. Это позволит не подвешивать основной поток и при этом сохранить скорость вычислений байткода в циклах.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
TGB,
как вариант, или многоуровневые таблицы, или одно событие может менять состояние нескольких таблиц...
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
 В документе разработчика QUIK: «Использование Lua в Рабочем месте QUIK.pdf», в разделе «2. Взаимодействие потоков Lua скрипта» описана рекомендуемая схема обработки колбеков.
Иногда в скрипте требуется что-то большее, чем просто в одном потоке засунуть значение в табличку и вытащить его в другом.
Надо делать так, как надо. А как не надо - делать не надо.
Написание автономного бота
 
Цитата
Sergey Gorokhov написал:
Данные не появились - сидим ждем дальше.
Цитата
Sergey Gorokhov написал:
Почему не рабочий? Ведь им пользуются значит рабочий.
Именно таким вариантом не пользуется никто.
Эта моделька, где скрипт рвется в бой сразу после получения хотя бы одной позиции в depo_limits. В результате в большинстве случаев получает фальстарт.
В вашем варианте в большинстве случаев вы так и будете сидеть ждать на старте, пока вам не дадут хорошего пинка, т.е. пока кто-то не откроет позиции (или хотя бы не выставит заявки) по всем инструментам, которыми торгует скрипт.

Цитата
Sergey Gorokhov написал:
В идеальных условиях и вопроса о признаке бы не возникло, не так ли.
Не так. Что такое "идеальные условия" в данном контексте? Это когда позиции загружены на сервер до начала торгов, они верные, не требуют корректировки.
Можем ли мы сейчас определить их при "идеальных условиях". Надёжно - нет, вы сами признали.
Возможно ли допилить QUIK таким образом, чтобы позиции можно было бы надёжно определить в "идеальных условиях". Да:
Цитата
Старатель написал:
Уведомление надо посылать клиенту после прокачки лимитов, тогда скрипт узнает об окончании прокачки по этому уведомлению.


Цитата
Sergey Gorokhov написал:
Вопрос был что надежней. Только внештатные ситуации и могут дать ответ на этот вопрос.
Сравнивать надежность во внештатных ситуациях имело бы смысл, если бы ваш вариант надёжно работал в штатной ситуации или, по крайней мере, не хуже предложенной ТС.
Надо делать так, как надо. А как не надо - делать не надо.
Написание автономного бота
 
Цитата
Sergey Gorokhov написал:
Да благодаря sys_events скрипт будет знать что на сервере все лимиты есть и опять же скрипту придется ждать прокачки данных (то что и сейчас)
Но опять же скрипт не узнает когда эта прокачка закончится
Уведомление надо посылать клиенту после прокачки лимитов, тогда скрипт узнает об окончании прокачки по этому уведомлению.

Цитата
Sergey Gorokhov написал:
Для примера, "плохие" варианты уже были озвучены:
Цитата
Sergey Gorokhov написал:
Допустим брокер загрузил пачку, isLimitsLoaded вернет true, а именно Ваши лимиты брокер не загрузил, а загрузит их чуть позже. Ваш код в этой ситуации примет решение что лимитов нет (нулевые) а на самом деле они будут позже.
Если брокер загружает лимиты посреди сессии, то - это внештатная ситуация.

Цитата
Sergey Gorokhov написал:
Цитата
Sergey Gorokhov написал:
А значит, Вам легко может приехать строка содержащая 0, а потом через некоторое время нормальное значение.
Это скорее исключение, чем правило. У подавляющего числа пользователей этого не случится никогда.
А вообще "плохие примеры" притянуты за уши и абсолютно ничего не доказывают.

Цитата
Sergey Gorokhov написал:
Вариант которые уже сейчас решает вопрос уже был предложен
Ждите колбек или смотрите в цикле.
Данные появились - хорошо работаем
Данные не появились - сидим ждем дальше.
Этот вариант не рабочий от слова совсем.
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.13
 
Цитата
TGB написал:
Текст данного комментария со Старателем не согласован, но надеюсь, что если, по его мнению, я написал что-то не то, он меня поправит.
---------
  Предложение1 (от Старателя).
     Мое краткое описание ситуации, устраняемое при реализации предложения Старателя, а далее цитаты.
     Бывают ситуации зависания в QLua, когда основной поток обслуживания колбеков всех скриптов пользователя, а также таблиц QUIK (это не таблицы Lua), блокируется выполнением  длинного цикла пользовательской программы на «чистом» Lua, в котором нет ни вызова seep ни вызова других C-функций.
----
   Далее цитирую Старателя:
«Если цикл продолжительный, чтобы не было зависаний, можно вставить внутрь цикла любую с-функцию (не обязательно sleep). Причём, вставлять можно не на каждую итерацию, а через задан-ное количество циклов. Это позволит не подвешивать основной поток и при этом сохранить ско-рость вычислений байткода в циклах.».
---
 Далее цитирую себя:
Комментарий 1.
«То, что предлагает Старатель, наверное, имеет смысл реализовать в самом QLua.

Всё же вставлю свои "пятькопеек".
В текущей реализации QLua (5.3/5.4) задача легко решаема на уровне пользовательского скрипта методом, предложенным мной выше, что позволяет при необходимости снять блокировку в любом месте цикла.
Это позволяет скриптеру писать байткод-циклы (в текущей версии QLua 5.3/5.4), выполняющиеся атомарно (читай потокобезопасно).
При реализации вашего пожелания на уровне QLua скриптер лишится такой возможности.
Надо делать так, как надо. А как не надо - делать не надо.
Слои индикаторов на графике цены, Нелогичное отобраджение подсказки при наложении индикатора на график цены
 
https://forum.quik.ru/messages/forum8/message8821/topic954/
Надо делать так, как надо. А как не надо - делать не надо.
Написание автономного бота
 
Цитата
Sergey Gorokhov написал:
Цитата
Mixa написал:
В биржевом шлюзе нет уведомления об окончании загрузки данных?
Биржевой протокол не является тайной
http://ftp.moex.com/pub/ClientsAPI/Spectra/CGate/prod/docs/p2gate_ru.pdf
sys_events, не?
Надо делать так, как надо. А как не надо - делать не надо.
Ноли в значении тренда в индикаторе
 
Значение самого индикатора по-прежнему не показывает (нулевое)
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] CreateDataSource выдает успех, если реальная подписка не осуществлена
 
Подробности здесь:
https://forum.quik.ru/messages/forum10/message54698/topic6407/#message54698
https://forum.quik.ru/messages/forum10/message54707/topic6407/#message54707
Надо делать так, как надо. А как не надо - делать не надо.
Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться., Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться.
 
Цитата
Roman Azarov написал:
Приведенное в пример описание проблемы вовсе не похоже на поведение, описанное пользователем  TYU
Как вы это определили? Вероятно, TYU может не знать, какие конкретно действия приводят к сбросу фильтров.

Цитата
Roman Azarov написал:
актуальный пример
Читайте тему с первого сообщения.
Надо делать так, как надо. А как не надо - делать не надо.
Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться., Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться.
 
Цитата
Roman Azarov написал:
разбор проходил и был завершен
Сначала прочитал "был заброшен".

Цитата
Roman Azarov написал:
актуальны ли они на данный момент?
Актуальны.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] getFuturesHolding: ошибка в работе
 
*одновременно по одной таблице
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] getFuturesHolding: ошибка в работе
 
Возникает вопрос: а корректно ли работает поиск SearchItems, если так совпало, что он производится в двух или более скриптах одновременно?
Надо делать так, как надо. А как не надо - делать не надо.
Доступ к Settings.line из кода индикатора, Пропадает доступ к массиву line структуры Settings в индикаторе после добавления индикатора на график и последующего изменения какого-либо параметра.
 
Уже регистрировали.
Осталось уладить "юридические аспекты" и сделать "анализ на непротиворечивость с общей политикой компании".
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Цитата
Сирануш написал:
он некорректно получает данные, из соседних таблиц.
Скрипт получает позиции только по тем бумагам, которые запрашиваются в нём самом и других скриптах.
Если работает только 1 скрипт, то позиций по другим бумагам он не получает.
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Цитата
Сирануш написал:
зачем второй скрипт
Второй скрипт - это просто нагрузка, чтобы показать, что первый скрипт получает позиции по бумагам, запрошенные в других скриптах.
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Запустив со Скриптом 1
Скрипт 3
Код
local run = true
function OnStop()
  run = nil
end

function main()
  while run do 
    getBuySellInfoEx(FIRM_ID, CLIENT_CODE, CLASS_CODE, SEC_CODE, 0)
    -- или
    --CalcBuySell(CLASS_CODE, SEC_CODE, CLIENT_CODE, ACCOUNT, 0, true, true)
    sleep(1)
  end
end
получим ошибку
Цитата
Старатель написал:
getDepoEx ничего не возвращает
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] getFuturesHolding: ошибка в работе
 
getFuturesLimit при одновременном запросе из нескольких скриптов по разным счетам ничего не возвращает (буквально).
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] getFuturesHolding: ошибка в работе
 
По мотивам этой темы.
Скрипт 1
Скрытый текст

Скрипт 2
Скрытый текст

Запускаем скрипт 1 и несколько скриптов 2 по разным бумагам. Любуемся результатом.

Возможно, другие функции getЧегоТоТам также работают нестабильно. Проверяйте сами.
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Сирануш, неужели ещё год назад нельзя было посмотреть, что за таблицу возвращает getDepoEx или хотя бы код бумаги в ней?
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Ключевым является это:
Цитата
Сирануш написал:
У меня в районе 50 скриптов висят
Т.е., более одного скрипта запрашивают позиции по разным бумагам.

Скрипт 1:
Скрытый текст

Скрипт 2:
Скрытый текст

Запустил скрипт 1 по "SBER" и несколько скриптов 2 по другим бумагам.
В итоге Скрипт 1 стал получать позиции не только по "SBER", но и по другим бумагам из других скриптов.
Скрытый текст

Причём эта ошибка более частая, чем "getDepoEx ничего не возвращает", и возникает в офлайн.
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Цитата
Egor Zaytsev написал:
Вы пишите, что getDepoEx ничего не возвращает
Эта проблема легко воспроизводится скриптом, опубликованном мной в сообщении #59

В скрипте Сирануш в том случае, если getDepoEx ничего не возвращает, присваивает значению текущего остатка ноль.
Поэтому для него "getDepoEx ничего не возвращает" = "ошибка текущего остатка", если по факту позиция открыта. Если позиция закрыта, то этой ошибки в его скрипте не будет.

Цитата
Egor Zaytsev написал:
пользователь   Сирануш  пишет, что у него ошибка текущего остатка
Что касается левых значений в currentbal, то, вероятно, это может быть связано с открытыми позициями, их количеством, классами, сроков расчётов и пр. факторами.
Т.ч. договаривайтесь с ТС о копии рабочего места.
Надо делать так, как надо. А как не надо - делать не надо.
Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться., Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться.
 
Цитата
Anton написал:
чтобы проверить

Цитата
Anton написал:
2) открыть тиковый график по любому инструменту
открыть ТОС

и второй по ссылке выше - загрузить настройки из *.wnd
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
 
Цитата
Сирануш написал:
50 скриптов висят и не на каждом всплывает этот баг и не не каждый день.
Уменьшите sleep до 1 мс - вероятность воспроизведения бага вырастет.
Надо делать так, как надо. А как не надо - делать не надо.
Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться., Сбрасывается фильтр Таблицы обезличенных сделок - таблица перестаёт обновляться.
 
https://forum.quik.ru/messages/forum1/message43617/topic5160/#message43617
Надо делать так, как надо. А как не надо - делать не надо.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 46 След.
Наверх