DronGO пишет: дождался ещё час и хотел увидеть 01:00:00, а увидел 25:00:00
А что бы Вы хотели увидеть, если дата торгов еще не сменилась? Насколько я понимаю, она меняется только утром. Если бы время начало отсчитываться заново с 0 часов прежде чем сменится дата торгов, то это выглядело бы так, будто мы вернулись в прошлое и начали вчерашний день заново. К каким неожиданным последствиям это может привести - можно только гадать, но очевидно, что это могло бы ввести в заблуждение каких-нибудь роботов и т.д. По-моему, ничего особо страшного во времени, превышающем 24 часа, нет. В данном случае это меньшее из двух зол.
Alexandr Shumilin пишет: Сервер Quik получает стаканы с биржи и отображает их в терминале ровно в том виде, в котором они транслируются. В разных клиентских терминалах, например Quik и прямой терминал биржи - стаканы должны и будут совпадать.
А почему тогда у разных брокеров или на разных серверах одного брокера стаканы разной глубины? Сервер Quik просто удаляет "лишние" строки (полученные с биржи) перед отправкой на терминал клиента? Или они приходят с биржи разной глубины?
Дмитрий пишет: А если его удалить до запуска терминала, то рекламу терминал все равно покажет или же будет показывать ее только после перезапуска терминала?
После перезапуска - имеется в виду только после второго запуска.
Михаил Иванов, Вы, наверное, просите невозможного - добавить в таблицу текущих параметров (ТТП) то, что не транслирует биржа. Попросите разработчиков сделать расчет нужного Вам значения в другом месте терминала, а не в ТТП.
Sergey Gorokhov пишет: возникает возможность временно наблюдать окно котировок в состоянии, когда обновлена только часть ценовых уровней, а вторая часть ещё не обновлена и соответствует предыдущему состоянию. В этот момент в стакане могут появляться "лишние строки"
Добрый день! Из данного ответа можно сделать вывод, что наличие лишних строк в стакане может быть достаточно надежным признаком того, что некоторые данные в нем неактуальны.
Цитата
Sergey Gorokhov пишет: Мы постараемся исправить данную особенность обновления стакана котировок в одной из ближайших версий ПО.
А приведет ли это к тому, что в моменты, когда часто обновляется большое количество ценовых уровней, данные в стакане будут значительно более корректными, чем сейчас в такие же моменты? То есть будет ли стакан в результате такого исправления выдаваться нам только после обновления всех строчек в нем и благодаря этому всегда отражать действительную картину расстановки в нем заявок (разумеется, с некоторым запаздыванием)? Или просто будет убран внешний признак неактуальности данных (лишние строчки), но качество данных в остальных строчках при этом не изменится?
s_mike@rambler.ru пишет: Однако в силу технологических особенностей терминала построение индикаторов на основании других индикаторов сопряжено с весьма неочевидными эффектами
А можно немного подробней, о чем именно речь? О том, что индикатор на Луа не сможет отследить вовремя изменение значений другого индикатора, наложенного на график? Или возможны другие проблемы?
Не нашел такой функции в описании языка. Может, Вы имели в виду getCandlesByIndex ? Но из скрипта на QLua встроенный (то есть тот, что уже включен в терминал, а не написан на QLua) индикатор все равно нельзя построить, так же как нельзя внутри скрипта передать ему для построения исходные данные.
А вообще я не имел в виду в данном случае программирование, а писал о возможностях пользовательского интерфейса.
Здравствуйте! Насколько я понял, в качестве источника данных для встроенных индикаторов можно выбирать только график цены или параметр ТТП. Было бы очень хорошо, если бы в качестве источника данных для индикатора можно было выбрать также значения другого, ранее построенного индикатора, то есть строить индикаторы на основе графиков других индикаторов.
s_mike@rambler.ru пишет: Если Ваша признательность не только виртуальна - я вам дам этот индикатор.
Спасибо, но во-первых хотелось бы видеть его исходный текст, чтобы при необходимости можно было оценить его правильность и/или внести какие-то изменения, а во-вторых он может быть полезен не только мне, поэтому и просил разместить его здесь.
Здравствуйте! Прошу добавить в число встроенных индикаторов Zig-zag, с возможностью выбора по какой цене его строить. Только чтобы его можно было строить не только по какой-то одной цене (закрытия, максимум, минимум, ...), но и по паре цен "максимум и минимум", то есть чтобы можно было пики строить по High, а впадины - по Low.
Виталий пишет: при запуске в Квике получил ошибку, что-то вроде "не удалось найти файл 10-53."
потому что команда, которую скрипт передает ОС, в данном случае выглядит так:
Цитата
start D :\ \tmp\\10-53. Unknown - We aRe oNe.wav
а если в имени файла или в пути к нему содержатся пробелы, то его нужно заключать в кавычки, чтобы команда выглядела так:
Цитата
start "D :\ \tmp\\10-53. Unknown - We aRe oNe.wav"
В скрипте в таком случае нужно писать так:
Код
os.execute("start \"D:\\tmp\\10-53. Unknown - We aRe oNe.wav\"")
или так:
Код
os.execute('start "D:\\tmp\\10-53. Unknown - We aRe oNe.wav"')
Цитата
Виталий пишет: и он без конца воспроизводит этот файл в AIMP3. Как сделать, чтоб он его 1 раз воспроизводил?
У вас многократно запускается проигрыватель или же проигрыватель запускается 1 раз и затем воспроизводит эту звукозапись повторно до тех пор пока не закроете его? В первом случае дело в скрипте. Во втором случае надо просто поменять настройки проигрывателя. Для Windows Media - убрать галочку в меню "воспроизведение / повторить".
Виталий пишет: Попробовал написать свой первый скрипт типа print("fgwreg"), сообщений об ошибках не появилось, как впрочем, и "fgwreg". Пока не было времени вникать, как сообщения выводить.
В QLua вместо этого есть функция message (описана в документации по QLua). Проиграть звуковой файл можно и без использования сторонних библиотек, например, запустив из скрипта проигрыватель Windows Media или другой, установленный вместо него по умолчанию, такой командой:
Код
os.execute ("start C:\\WINDOWS\\Media\\ringin.wav")
-- в командной строке лучше использовать команду start, т.к. без нее откроется окно интерпретатора команд,
-- которое не закроется само пока не будет закрыт проигрыватель, а выполнение скрипта прервется до тех пор,
-- пока не закроется окно интерпретатора команд
Подтверждаю, подобное явление (строк в стакане больше, чем должно быть по идее) наблюдал на боевом сервере неоднократно, правда где-то прошлой осенью на более старых версиях терминала. С тех пор просто не следил за этим, но уверен, что проблема никуда не ушла (если это действительно проблема, то есть если лишние строки в стакане несут в себе недостоверную информацию).
А я поддерживаю пожелание DronGO И время лучше ставить даже не сервера брокера, а биржи, если есть такая возможность. Тогда можно будет без проблем сопоставить по времени поток обезличенных сделок и обновлений стаканов.
Уважаемые разработчики, ответьте на такой вопрос: Является ли запись в файл значений того или иного набора переменных с помощью функции file:write() потокобезопасной? Иными словами, если в один и тот же файл будет производиться запись в коллбэках (типа OnParam, OnTrade, OnQuote и т.п.), а также в функции main(), то не приведет ли это к каким-то нежелательным или непредсказуемым последствиям?
Николай Камынин пишет: 2) Прочитать значения встроенного индикатора, размещенного в окне скрипта-индикатора, без создания руками или ногами идентификатора графика chart_tag.
Было бы гораздо лучше, если бы можно было прочитать значения встроенного индикатора без создания руками или ногами идентификатора графика chart_tag не только в скрипте-индикаторе, но и в обычном скрипте. И чтобы при этом не обязательно нужно было иметь открытый график, а можно было бы использовать также для расчета значений индикатора данные, полученные с помощью CreateDataSource().
И тогда уж для полноты картины стоит добавить линию, обозначающую конец торгового дня на фондовом рынке (который, кстати, тоже может переноситься иногда).
По-моему терминал всегда использует для работы только 1 ядро, независимо от их количества в процессоре (если не считать работы функций main() в скриптах - про них ничего не могу сказать).
Ничто не мешает пользователю ограничить в настройках число отображаемых на графике свечей. И тогда терминал будет работать не хуже, чем сейчас. Вы сами можете выбирать, что вам важней - количество свечей или скорость работы.
Дмитрий пишет: Здравствуйте! Также обнаружил, что любой вызов функции getScriptPath() в скрипте индикатора (и вообще любого скрипта, находящегося в папке LuaIndicators) приводит к зависанию терминала при попытке открыть окно добавления индикатора на график, но только в том случае, если вызов getScriptPath() производится не внутри какой-либо другой функции (типа Init(), OnCalculate() и т.п.). Версия терминала 6.16.0.42
Здравствуйте, Мы в курсе описанной проблемы. Она будет исправлена в одной из следующих версий программы.
Старатель пишет: Скрипт выводит в лог последнюю котировку bid/offer из OnParam и OnQuote Из лога видно, что OnParam даёт информацию об изменении котировки раньше.
logik пишет: Проверьте сами сегодня на RIU5 пятиминутный баровый график с 15-00 до 15-20 и все поймете.
Я так понимаю, что проверять это надо в ходе торгов на только что формирующихся свечах (и совсем не обязательно пятиминутках, можно и на меньшем интервале - больше будет шансов увидеть подобную ситуацию). А на истории это смотреть уже бесполезно.
Дмитрий пишет: Ошибка заключается в следующем: если в двоичном файле с данными графика есть свечи, где цена отрицательная (меньше 0), то в текстовый файл вместо нее выводится 0.
sam063rus пишет: форум начнёт с..рать на e-mail уведомлениями
А разве не в этом смысл подписки?
Цитата
Старатель пишет: Меню "Избранное" в профиле не хватает
Его с успехом может заменить меню "избранное" в браузере. Если, конечно, не приходится пользоваться при чтении форума разными браузерами или разными компами.
Constantin Constantin, чтобы подписаться на тему нет нужды оставлять в ней сообщение. Для этого возле названия темы специально есть слово "Подписаться"
s_mike@rambler.ru пишет: Бирж в мире очень много разных. У каждой биржи свои параметры и свои особенности этих параметров. Шлюзы есть к нескольким из них. Описать все нюансы невозможно.
А я и не прошу описывать все нюансы в руководстве разработчиков. Тем более что касается всех бирж. Большинству хватило бы ссылки на подобное описание на сайте самой распространенной среди пользователей квика биржи - Московской.
Цитата
Дмитрий пишет: Было бы очень хорошо, если бы разработчики привели хотя бы ссылку на такую информацию на сайте биржи.
Под "подробными комментариями относительно назначения каждого параметра и т.п." я имел в виду нечто большее, чем просто русскоязычный текст с названием параметра. Иногда только по названию сложно однозначно понять, что именно обозначает тот или иной параметр, как он рассчитывается биржей и т.п. Разработчики в данном случае любят отсылать за подробностями на биржу, но на сайте Московской биржи я не замечал подробных описаний параметров (да и вообще каких-либо их описаний). Было бы очень хорошо, если бы разработчики привели хотя бы ссылку на такую информацию на сайте биржи. Ведь сами они где-то брали в свое время описание всех параметров ТТП, которое приведено в руководстве по QUIK (которое правда уже несколько отстало от жизни).
Предположим, у нас работает параллельно два скрипта, отправляющих транзакции, и ответ на транзакцию, отправленную 1-м скриптом, будет получен функцией OnTransReply 2-го скрипта. Получит ли в таком случае ответ на эту же транзакцию и 1-й скрипт в своей функции OnTransReply?
sam063rus пишет: неужели Вам так жизненно принципиально совпадает ли квиковская модель индикаторов с Вашей или какой-то ещё?
Это может быть принципиально, например, в том случае, если делается предварительное тестирование торгового алгоритма на исторических данных с использованием другой программы технического анализа, а уже затем этот алгоритм используется для торговли в Quik. Если показания индикатора в программе теханализа будут отличаться от показаний того же индикатора в Quik, то смысл такого тестирования на исторических данных во многом теряется.
Дмитрий пишет: Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице.
Правда если речь идет об индикаторе, то CreateDataSource в нем использовать нельзя :( Если только делать это в отдельном скрипте, сохранять таблицу в файл, а в индикаторе читать ее из файла.
Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице. Если брокер предоставляет графики цены за предыдущие дни, то в большинстве случаев для каждого таймфрейма время первой свечи будет отличаться от других таймфреймов (кроме случаев, когда по данному инструменту начиная с какого-то таймфрейма и для более крупных таймфреймов история будет насчитывать меньше 3000 свечей, но на этот случай мы сохраняем еще время второй свечи). Данные из этой таблицы будут актуальны в течение всего торгового дня. Дальше проверяем - если у нас нет совпадающих пар значений времени в полученной таблице, то можно смело их использовать для идентификации таймфрейма на открытом графике, к которому обращаемся посредством getCandleByIndex. В подавляющем большинстве случаев это будет работать, а проверка значений пары свечей не будет слишком затратной.
Валентин пишет: Зачем две последние? любые две рядом. еще две любые рядом и еще две любые рядом. получаем три значения, берем то значение, которое чаще всего встречается. Конечно как то через одно место, но чем не вариант
Валентин пишет: getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Этот способ не всегда даст верный результат. Он не сработает, если между двумя последними свечами был перерыв (промежуток времени), когда не совершались сделки.