Юрий написал: Не успели выложить и уже БАГИ.... Невозможно задать десятичные значения параметров в собственных индикаторах где ранее это было возможно. Тупо не ставится ни точка ни запятая в качестве разделителя дробной части. Соответственно это СРАЗУ ставит крест на дальнейшем тестировании данной версии...
Добрый день,
Для указания вещественной природы параметра индикатора нужно обязательно дополнять его значение суффиксом .0. В документации данное условие мы отразим в очередном обновлении ПО.
Вы внутри себя не договорились что ли, почему Вы пишите одно, а до Вас Пишут другое?
Цитата
Sergey Gorokhov написал: Внимание всем. В данном топике описываются две разные проблемы Как либо пересекать их крайне недопустимо. Одна проблема, то что в свойствах Lua индикатора нельзя ввести вещественное число если в Settings оно задано как целое. И Вы Александр М, описываете ровно ту же самую проблему, только другими словами. И эта проблема будет чиниться.
Вторая проблема, то что в свойствах индикатора, в уровне цены, нельзя указать число с точностью превышающую точность инструмента. И как уже было сказано, это НЕ является багом, так работало всегда и такая работа описана в документации .
Sergey Gorokhov написал: Внимание всем. В данном топике описываются две разные проблемы Как либо пересекать их крайне недопустимо. Одна проблема, то что в свойствах Lua индикатора нельзя ввести вещественное число если в Settings оно задано как целое. И Вы Александр М, описываете ровно ту же самую проблему, только другими словами. И эта проблема будет чиниться.
Вторая проблема, то что в свойствах индикатора, в уровне цены, нельзя указать число с точностью превышающую точность инструмента. И как уже было сказано, это НЕ является багом, так работало всегда и такая работа описана в документации .
Я Вам дополнительную информацию предоставляю. Рад, что Вы решили, что это все-таки проблема и будет решена. Надеюсь до Брокеров Ваше версия 8.7 не дошла в текущем виде, иначе у пользователей уже может произойти сброс параметров..
Что касается второй проблемы "в уровне цены, нельзя указать число с точностью превышающую точность инструмента", то это все-таки БАГ, т.к. это пользовательские уровни и Вы не можете решать за пользователя, какое значение ему надо проставить согласно свой стратегии и расчетам. Также вы не ответили на мой вопрос, касательно осцилляторов и вообще любых индикаторов в Отдельной обрасти графика. Какое отношение точность инструмента имеет к данным индикаторам, у которых даже диапазон значений свой?
Дополнительно выяснилось, что параметры у существующих индикаторов, которые уже добавлены на графики - округлились до целого.
Возникает вопрос: Разработчики QUIK вы что творите?
Сейчас после обновления до 8.7 у всех пользователей на десятках графиках как минимум часть оптимизированных и выстраданных параметров на десятках индикаторах округлилась до целого и Индикаторы резко стали показывать "левые" значения. Мало того, у части пользователей по данным индикаторам работают роботы. И точно 99% пользователей заметит этот Ваш "подарок" не сразу, но когда заметит, я Вам не завидую, т.к. ВСЕ (и брокеры и разработчики индикаторов и роботов) переведут стрелки на Вас и правильно сделают. У Вас данное "обновление" даже не анонсировано в изменении версии.
Вы что делаете? Вы вообще думаете о последствиях своих решений? Кто у вас принимает решение о включении тех или иных правок в версию? Почему нужные исправления висят годами, а вот такие "спорные" (я бы высказался по иному) внедряются за пару недель без анализа последствий?
_sk_ написал: Да ещё и регрессы в тех местах, которые не ожидали увидеть (см. второе сообщение темы).
Строго говоря это не баг, а наоборот в соответствии с пожеланием не то чтобы давним . Вот поэтому и приходится влезать в некоторые темы и пытаться доказать некоторым пожелателям, что их некоторые пожелания не так уж хороши, как им кажется. Ну в этом конкретном случае я скорее за, оно так логичнее.
Пожелание мягко говоря спорное, т.к. по синтаксису lua 5.3 любое действие с переменной преобразует ее во float, а тем более, что она наверняка используется в расчетах и там все переменные будут float. Но вы удивительно быстро на него прореагировали, при этом не учли, что есть уже тысячи готовых индикаторов, которые на руках у десятков тысяч клиентов, и у которых сейчас реальные проблемы появились на ровном месте.
Старатель написал: Точность значений индикаторов, например, таких, как VHF, не может ограничиваться точностью цены самого инструмента.
И тем не менее оно так работает, и даже в документации сказано "Значение указывается в единицах цены," так что это не баг а фишка, если хотите другого поведения, то это пожелание на доработку.
Значение должно указываться в единицах цены используемого индикатора, даже МА рисуется с дробной частью и уровень мы должны мочь поставить произвольный. Про осцилляторы я написал выше, там уже вообще ваша логика не работает никак.
Александр М написал: Дополнительно так и остался похожий баг, который у вас тянется еще с начала времен и по которому только сплошные обещания исправить.
В настройках ЛЮБОГО индикатора (и самой цены) в разделе Уровни нельзя добавить уровень с дробной частью. Вообще.
Если на инструменте точность цены не позволяет наличие дробных значений то форма ввода цены уровней действительно не даст указать дробную цену, и собственно это не является багом. Если у инструмента точность позволяет дробные значения то уровни прекрасно рисуются.
Если по данному инструменту добавить осциллятор, который рисует свои значения от 0 до 1, то уровни тоже не добавляются. Обьясните мне, какое отношение имеет точность самого инструмента, к осциллятору по инструменту, у которого точность своя?
_sk_ написал: Вчера опять терминал 8.6.0 упал с дампом. Дамп выслан разработчикам. Нестабильная работа, к сожалению. Когда будет новая версия -- не говорят, цикл выпуска релизов медленный, хотя ошибки критические.
Поэтому я решил, что Lua 5.3 в своих скриптах проверил, правки для восстановления работоспособности внёс, а теперь откачусь к версии 8.3, чтобы финансово не терять из-за таких внезапных падений в неподходящее время. Пусть останется один тестовый терминал с малыми торговыми объёмами, а основные объёмы пока доверять новым терминалам не буду
Даже брокеры уже официально на сайте вместо 8.5 стали опять 8.3 выдавать. Конкретный пример - БКС. Я специально звонил в тех.поддержку и официальное мнение - версия нестабильная. У меня 8.5 только в тесте крутится.
Ждем стабильной версии от разработчиков, времени осталось в обрез до 6 июля.
Мне кажется, что если есть ошибка в скрипте, то должен вывалиться скрипт, а не падать весь QUIK, тем более, что у Юрия никакие сторонние и сомнительные библиотеки (или неправильно скомпилированные) не используются в принципе, чистый штатный lua. Следовательно падение QUIK - это ошибка в самом QUIK.
Александр Волфовиц написал: Ну вот, обновил до 8.5.2.11 (до этого была 8.3.2.4) , и при запуске работавшего ранее без проблем скрипта квик вылетел с сообщением что-то вроде "закрыто рабочее место QUIK". Откатил обратно к 8.3.2.4 - всё нормально работает.
В какую сторону хоть копать, подскажите?
Копать в сторону перекомпиляции скрипта под lua 5.3 с изменением синтаксиса естественно под новую версию.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Данное пожелание зарегистрировано еще с 2015 года, его просили сделать изначально, еще с 6.17 версии QUIK, т.к. работать со списком скриптов очень неудобно. В конфигурацию они нормально не попадают, надо перегружать весь QUIK и то не факт. При вылете QUIK список восстанавливается вообще непонятно какого варианта (хотя конфигурация сохранятся постоянно). Упорядочить записи нельзя, а если скриптов несколько десяток, то в списке полная каша.
1. Текущие торги ставлю якорь 2. Стандартные график по инструменту заякоренный на текущие торги 3. При переходе между инструментами в графике минимизируется область обьема вниз. При этом область не пропадает, просто ее высота в 0 превращается.
Мне кажется рекламировать так явно свои продукты на форуме разработчиков не очень хорошо. Если все так будут делать, то сообщения с реальными проблемами затеряются.
Александр М написал: По времени гораздо быстрее удалить многострочные вручную, а потом скриптом однострочные, чем писать парсер или искать готовый. Проверено.
А если скрипт в несколько тысяч строк ? Так что плохо проверено, лучше потратить несколько часов (дней может даже) и потом все быстро делать, чем постоянно тратить кучу времени на удаления оных.
--------------------- Функция для удаления всех комментариев в файле.lua , может кому пригодится.
Скрытый текст
Код
...
--===================================
Все мои роботы из нескольких тысяч строк, но как-то справляюсь. :) Плагины, что я проверял, некорректно отрабатывали многострочные комментарии.
Александр М написал: Зачем в дистрибутиве, по которому официально обьявлено, что он переведен на lua 5.3 нужен файл lua5.1.dll?
Как зачем? Терминал же теперь поддерживает две версии 5.1 и 5.3, не?
С чего вы это взяли? Читайте внимательно официальное сообщение:
"В связи с необходимостью поддержки 19-значных номеров, в терминале версии 8.5 выполнено изменение версии LUA c 5.1 до 5.3. В связи с этим:
Выполнение скриптов, скомпилированных под версию Lua 5.1, будет невозможно на новой версии терминала QUIK, для решения проблемы потребуется повторная компиляция под версию Lua 5.3.
Действительно, есть синхронизационная ошибка, иногда приводящая к сбоям. Мы исправим ошибку в ближайшем обновлении ПО. Приносим извинения за доставленные неудобства.
Слово "иногда" тут явно лишнее. Можно более конкретно, когда будет ближайшее обновление и что именно там планируется исправить из той кучи ошибок, что уже набралось?
При возникновении ошибок при использовании LUA-скриптов, либо в том числе не связанных со скриптами, на версии 8.5.1 Рабочего места QUIK, просьба направлять нам на почту quiksupport@arqatech.com следующие данные: - подробное описание проблемы и скриншот возникшей ошибки (если таковая была); - архив Рабочего места QUIK без файлов ключей на котором возникла ошибка; - по возможности файл скрипта, который выполнялся на момент возникновения ошибки. Данная информация позволит разобраться в каждом из случаев детально и как можно скорее устранить ошибки, если таковые будут найдены
А вы уже исправили ошибки, которые нашли в соседних ветках?
Очень много подтвержденных с Вашей стороны ошибок и обещаний "Мы исправим конфигурацию в ближайшем обновлении ПО."
Когда будет "ближайшее обновление ПО." и хотелось бы в описании этого обновления четко увидеть, что именно было исправлено? У вас явно большие проблемы с памятью, потоками и правильной отработкой функций.
Присоединяюсь. Или правьте нормально программу, чтобы она не падала через 1-2 дня без дампов или просите Мосбиржу по переносе.
Повторюсь: На терминале НЕ используются сторонние библиотеки или dll, только встроенные возможности lua. Скрипты стабильно работают месяцами на 7-й и 8-й версии QUIK без падений, синтаксис под 5.3 изменен и проверен.
Данная ошибка будет исправлена ДО июня, когда все обязаны перейти на 8.5? Сейчас 8.5 пользоваться нельзя, QUIK падает через 1-2 дня просто на ровном месте без дампа.
Причем в скриптах CreateDataSource вообще не используется, т.е. все значения берутся напрямую с графиков. Скрипт отработан на 7 и 8-х версиях и работает там без ошибок месяцами (естественно он исправлен под синтаксис 5.3), никаких внешних библиотек не используется в принципе.
Александр М написал: увидел, что там 2 dll и версии lua 5.1 и версии 5.3 Какая основная
Можно предположить, что 5.1 оставили для какой-то там совместимости, 5.3 экспортирует все то же самое (с поправкой на версию луа). Пока не обнаружил, чтобы что-нибудь крэшнулось без 5.1 (просто убрал ее).
Не хочется просто так экспериментировать. Я все-таки подожду официальный ответ. В Документации тоже ни слова, что кстати странно, как минимум должны были именно в Документации озвучить, что версия lua меняется и ссылку дать на различия в версиях.
Хотелось бы получить официальный ответ, можно ли начинать тестирование. Также я увидел, что там 2 dll и версии lua 5.1 и версии 5.3 Какая основная и вообще по какому принципу они используются при запуске lua-скриптов?
Александр М написал: вещественные числа двойной точности (double 64-bit)
Только там под мантиссу 52 бита оставлено , откуда и все нынешние проблемы. Там еще старший бит неявный, подразумевается всегда единица, а если это не так, получается денормализованное число и т.д. и т.п., в общем в даблы 64 бита не влезают хоть тресни. Более того, никакие ухищрения вроде *reinterpret_cast<unsigned long long *>(&dbl) = 0xFFFFFFFFFFFFFFFFULL надежными не будут, дабл всегда может заехать в сопроцессор без уведомления, а тот его "подправит" под ожидаемый формат, да и сишный рантайм тоже ожидает дабл в виде дабла и может что-нибудь с ним сделать под ковром.
Александр М написал: 2. Тип полей во всех текущих функциях, которые в качестве параметров требуют ввода номера заявки или сделки или возвращают номер заявки или сделки, НЕ поменяется.
По-моему, весь смысл перехода на 5.3 в том, чтообы тип этих полей поменялся. В NUMBER больше 51 бита не впереть даже на 5.3.
выдержка из Lua 5.3: "Стандартный Lua использует 64-битные целые (integer) и вещественные числа двойной точности (double 64-bit)"
В связи с вышеизложенным настоятельно рекомендуется проверить работоспособность своих скриптов с 19-значными номерами заявок и сделок.
Настоятельно рекомендуем проверить тем, что еще не вышло и неизвестно как будет реализовано...
Более подробно распишите, как сделать эту волшебную операцию, Вы же не можете в открытую издеваться над пользователями?
Добрый день.
Цель данного оповещения - раннее предупреждение о грядущих изменениях, чтобы пользователи уже сейчас начинали работать в данном направлении. По поводу выхода соотв. версии рекомендуем следить за обновлениями в данной ветке форума.
Если вы хотя бы в общих чертах опишите грядущие изменения, то мы начнем работать. Подтвердите информацию: 1. Lua обновляется до версии 5.3 2. Тип полей во всех текущих функциях, которые в качестве параметров требуют ввода номера заявки или сделки или возвращают номер заявки или сделки, НЕ поменяется. 3. Функция tostring будет корректно работать в новыми большими числами. 4. Какие еще возможные изменения могут быть?
Sergey Gorokhov написал: Александр М, К сожалению мы не можем разглашать даты выпуска обновлений Можем сказать только то что оно планируется к выпуску до того, как данное изменение в торговой системе будет внедрено.
Отдельный вопрос: после выпуска вашего обновления будут ли какие-то проблемы с компилированием скриптов через luac?
Александр М написал: после изменения с Вашей стороны.
Вроде биржа вносит изменения, а QUIK только обещает их поддержать, разве нет?
Поддерживаете вы их путем выпуска новой версии, это не изменения с вашей стороны? Зачем этот спор? Меня интересует результат, когда мы - пользователи вашей программы увидим анонс изменений в программе и новую документацию?
Александр М написал: Я правильно понял ваш ответ, что после Вашего обновления и перехода на 19-ти значные номера заявок и сделок функцией tostring в рамках данных номеров пользоваться будет нельзя?
никто такого не говорил, не пытайтесь читать между строк. Пока непонятно что будет с tostring
А когда станет понятно? Остался месяц, мы со своей стороны должны подготовить скрипты к корректной работе после изменения с Вашей стороны.
Александр М написал: Что делать разработчики? Это не апрель, это уже сейчас.
Конкретно с этим кейсом ничего не делают и не будут делать, и даже если захотят ничего не смогут сделать т.к. проблема НЕ в QUIK, а конкретно в функции tostring, которая является частю самого Lua, который не является нашей разработкой.
Попробуйте использовать другую функцию
Код
a = 317934958413900
message ( string.format ( "%.f" ,a))
Я правильно понял ваш ответ, что после Вашего обновления и перехода на 19-ти значные номера заявок и сделок функцией tostring в рамках данных номеров пользоваться будет нельзя?
Это у Мосбиржи запланировано на апрель, а у вас когда запланировано? Обновление QUIK должно выйти заранее, как минимум за 2-3 недели (а лучше больше) до перехода у Мосбиржи. Еще брокеры обновить ПО должны, потом клиентам выслать.
ответ. Можете. Скорость исполнения транзакция и получени ответов на них зависит от инфраструктуры.
Я проверил, ручное групповое снятие заявок работает гораздо быстрее. Код не причем, там просто в цикле пуляются транзакции. Я должен иметь право снимать ВСЕ свои заявки независимо от их количества, поэтому я хочу получить ответ на вопрос на счет флуд-контроля на бирже.
Александр М написал: В терминале есть ограничение на число транзакций на снятие в секунду?
В терминале нет. И даже на сервере нет. А вот на бирже есть. Легко можно попасть на флуд контроль.
Цитата
Александр М написал: Я могу в цикле запулить 500 транзакций через sendTransaction(Transaction), если мне надо снять 500 заявок? Если нет, то как мне гарантированно это сделать?
Вы можете в цикле делать что угодно, вопрос с какой скоростью оно обработается дальше.
На счет скорости я понимаю, мне главное понять, я могу в цикле выставить условно 500 транзакций, каждая на снятие 1 заявки без всяких sleep, ожиданий отработки предыдущей и т.д.
По вашим же словам Групповая ручная заявка преобразуется на клиентском QUIK в кучу запросов на снятие конкретной заявки и если у меня стоит 500 открытых заявок, то они должны сняться максимально быстро подряд, откуда тут флуд-контроль?
Александр М написал: Вы не ответили. Тип "KILL_ALL_FUTURES_ORDERS" работает в Lua? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
KILL_ALL_FUTURES_ORDERS работает по акциям не работает. связано это с исторически сложившимися (еще со времен QPILE) архитектруными особенностями. Изменить это нельзя.
Сами по себе транзакции ALLL Выполняются НЕ сервером QUIK, а непосредственно терминалом QUIK. Терминал просто в цикле перебирает заявки и снимает те которые удовлетворяют заданным условиям. В коде Вы легко можете сделать то же самое.
Удивительно, с технической точки зрения не вижу разницы в сложности между снятием фьючерсной заявки или по акциям.
В терминале есть ограничение на число транзакций на снятие в секунду? Я могу в цикле запулить 500 транзакций через sendTransaction(Transaction), если мне надо снять 500 заявок? Если нет, то как мне гарантированно это сделать?
Уважаемая тех.поддержка, когда вы до конца ответите на мой запрос (см. выше)?
Зачем это искусственное ограничение сделали? Транзакции преобразуются в стандартные запросы пользователя, кто мешает транзакцию на групповое снятие отработать, если в ручном режиме это прекрасно работает и в документации по транзакциям эти типы предусмотрены?
Egor Zaytsev написал: Этот раздел относит в tri файлам. В разделе Раздел 8. Алгоритмический язык QPILE/Функции для работы с заявками сказано как раз про ограничения для Qpile.
К сожалению по Lua вы вообще в документации не расписали структуру таблицы транзакций для ее отправки с описанием всех ДЕЙСТВУЮЩИХ полей и ДЕЙСТВУЮЩИХ значений. Язык Lua работает с версии 6.17 (насколько я помню), а документации все нет.
Вы не ответили. Тип "KILL_ALL_FUTURES_ORDERS" работает в Lua? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
Александр М написал: Уважаемая тех.поддержка, когда вы ответите на мой запрос?
Добрый день. Транзакции, выполняющие групповое снятие заявок, не поддерживаются:
«KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО.
Тогда непонятно почему, в Документации по QUIK "Раздел 6. Совместная работа с другими приложениями" начиная как минимум с 7 версии и по текущую есть описание групповых типов:
"6.11 Импорт транзакций" 6.11.3 Формат .tri-файла с параметрами транзакций ACTION Вид транзакции, имеющий одно из следующих значений: «KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО, «KILL_ALL_FUTURES_ORDERS» – снять все заявки на рынке FORTS,
Команды снятия группы заявок по условию («KILL_ALL_ORDERS», «KILL_ALL_STOP_ORDERS», «KILL_ALL_NEG_DEALS», «KILL_ALL_FUTURES_ORDERS») обрабатываются следующим образом: 1. Параметры «CLASSCODE», «TRANS_ID», «ACTION», ACCOUNT являются обязательными. 2. Возможные дополнительные параметры для команд снятия заявок по условию: — «KILL_ALL_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_CODE», «COMMENT», — «KILL_ALL_STOP_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_ CODE», «COMMENT», «EXPIRY_DATE», — «KILL_ALL_NEG_DEALS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_ CODE», «COMMENT», «PARTNER», «SETTLE_CODE», — «KILL_ALL_FUTURES_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «COMMENT», «CLIENT_CODE», «BASE_CONTRACT». 3. Снятию подлежат заявки, соответствующие всем указанным в транзакции параметрам (логическое «И»).
Также вы НЕ указали тип KILL_ALL_FUTURES_ORDERS, значит он поддерживается? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?