Juggler: жонглирование графиками
- Версия: 2.05
- Требования: Quik 8.6
- Размер: 1.33 MB
- Просм: 7981
- Добавлено: 06.12.16
- Скачано: 1400
- Изменено: 28.12.21
Индикатор, позволяющий выводить на график результат математических и логических действий над несколькими (до 5) другими индикаторами или графиками котировок инструментов.
Описание индикатора и примеры использования здесь.
Порядок установки:
- Прочитать файл readme.html
- В папке терминала QUIK создаем подпапку LuaIndicators (если её там еще нет)
- помещаем в нее файл juggler.lua (или juggler_full.lua, если вам известен пароль от полной версии)
- Библиотеку bot4sale64.dll кладем в папку терминала quik.
- Добавляем индикатор на график
- Заходим в параметры и настраиваем идентификаторы исходных графиков и вычисляемое выражение.
Архитектура терминала устроена таким образом, что результат расчета juggler может быть выведен как сразу, так и на первом пришедшем тике по главному инструменту. Если график сразу не построился и сделок по главному инструменту нет - просто зайдите в настройки и ничего не меняя, нажмите кнопку <OK>
Демонстрационная версия работает на таймфреймах от 1 до 4 минут. Полная версия ограничений не имеет.
Полную версию можно получить, поблагодарив автора. Благодарность, выраженную в дензнаках, следует переводить на вот эту карту или электронный кошелек
А вот размер этой благодарности определяйте на своё усмотрение. На вопрос "сколько?" ответ будет с длинным количеством нулей, поэтому лучше его не задавать ))) Карта действительна и актуальна.
История версий:
Версия | Изменения |
2.05 |
Добавлена возможность использовать аддоны с пользовательскими функциями. Добавлена пользовательская переменная N, которую можно использовать в вычисляемых выражениях. Содержит номер расчитываемой свечи. |
2.04 |
Добавлена возможность использования непоследних свечей исходных графиков (параметр номер свечи справа, нумеруется с 0) |
2.03 |
Пересобрано для quik 8.6 |
2.01 |
Правильная работа индикатора в случае, если на графике присутствуют другие сдвинутые вправо или влево индикаторы |
2.0 |
Пересобрано для работы с Quik версии 8 |
1.6 |
В настройках индикатора в поле "Выражение" теперь можно указать имя файла, содержащего это выражение. Удобно в случае длинных и сложных выражений. Если в имени файла не указан путь, подразумевается папка LuaIndicators. |
1.5 |
Ускорена загрузка индикатора при старте терминала |
1.4 |
Количество исходных графиков/индикаторов увеличено до 5. Использовать их можно в любых комбинациях |
1.3 |
Адаптировано для работы с bot4sale.dll Исправлены мелкие недочеты |
1.2 | Первая публичная версия |
С этим нет никаких проблем. В статье есть вся информация по вашему вопросу.
ДАТА ОПЕРАЦИИ: 07.01.17
ВРЕМЯ ОПЕРАЦИИ (МСК): 00:49:00
Пароль отправлен вам на почту
или добавить этот расчет в выражение ?
Тогда бы вообще отлично было)))
Я ничего не понял..
(Н+ L)/2 ,
Можно конечно добавить ещё один график и вычислить среднее - но не хочется городить графики.
Карта зачисления 532130XXXXXX7589
Срок исполнения до трех банковских дней
Простой пример - на бирже торгуется етфы с долларовой базой, но котировки пересчитаны в рубль. Задача получить обратно долларовую цену. Значит в окно диаграммы кидаем график USDRUB, именнуем их - получаем то что надо.
Проблемы на память:
1. Из есть канал-связанная таблица, то при смене тикера, все слетает.
2. Процентный график по juggler не строится, потому как за основу берется цена базового актива, а не jugglera
3. Если сделать несколько графиков с разными инструментами и в каждом сделать juggler то они будут копировать друг друга. Так и не понял как сделать независымые параметры :(
4. Хотел сделать вот ещё как - сравнить ДВА разных актива друг с другом через процентный перформанс относительно произвольной базы расчета. Причем сделать это через единую валюту.
То есть например два актива в рублях. Считаем через jug их долларовую цену. (jug), далее построить процетный прирост относительно единой даты с базой в 100% (или 0%)... а далее подневно ещё например подсичтать дельту между ними (бетту?)... банальный пример - индекс и актив сравнить между собой.
ps неплохо бы было так сравнивать 2-3-4-5 графиков, активы в разных валютах приведенные к общему. пишите если что на смартлаб обнову.
Вы слишком торопитесь выводами. Давайте поймем по пунктам.
1. ,Нет, не слетает. Дождитесь первого пришедшего тика по главному инструменту и все построится. Объяснение этого феномена приведено в статье.
2. Я не понял, что вы имели ввиду. Попробуйте объяснить на примере.
3. Вы наверное размножали диаграммы по Ctrl-N и потом меняли инструменты? Тогда все правильно - вы же не поменяли в настройках juggler идентификаторы графиков. Идентификаторы остались прежними и вы видите все тот же результат, посчитанный по старым источникам.
4. Я человек дремучий и столь сложные понятия как процентный перформанс мне недоступны )) лучше уж по старинке, на пальцах рассказывайте..
5. кошмар-кошмар. Если кто-то понял написанное - растолкуйте мне....
p.s. Если бы понять на каком-то примере, что вы хотите и идея мне понравится, можно и сделать. Но пока я понимаю только слова. Смысл непонятен и экстрасенса рядом нет.
1) есть ли возможность посредством пользовательско го интерфейса обращаться к функциям O, H, L, C, T конкретно заданной свечи, т.е. когда требуется произвести арифметические операции с ценами последней свечи первого инструмента и ценами предпоследней свечи второго инструмента?
2) что такое "Номер линии" со значением "0.0" и как его можно использовать?
3) возможно ли применение в пользовательско м интерфейсе каких-либо агрегирующих функций, например, среднего значения от цен O, H, L, C по всем (части) свеч-ам (-ей) инструмента?
Новая версия очень сильно грузит QUIK, прошлая версия 1.2. в разы быстрее загружалась, не зависимо от того сколько индикаторов Juggler было в программе. Сейчас с одним индикатором грузится больше минуты, а если их сделать 5-10, то невозможно дождаться загрузки программы.
Когда первоначально в Quik создаешь свои индикаторы, то нормально работает, но только стоит перезагрузить Quik, то все зависает.
Что посоветуете для повышения производительно сти?
Я использую juggler также для вывода на сам график цены сигналы на покупку или продажу. Сигналы отображаются, но во время движения цены, пока не закрылся бар возникает много сигналов и после закрытия бара в итоге сигнала нет, но он все равно отображается. Для того чтобы реально посмотреть есть сигнал или нет, то необходимо входить в настройки графика и нажимать ОК, только тогда нормально начинают отображаться сигналы. Как сделать, так чтобы не входить постоянно в настройки графика в момент движения цены? У меня стоит старая версия 1.2, т.к. новая очень сильно подвисает.
Например, идентификатор графика цены называю H. Ниже графика создаю необходимый индикатор на основе juggler и он кстати во время движения цены работает адекватно. Потом в области графика задаю сигналы на основе juggler с помощью треугольников с использованием простой формулы IIF(B==-1,A+A*0 .007), где A - H, т.е. наш бар, а B - это показатели ранее созданного индикатора juggler. Если условия на покупку совпадают, то на графике под баром отрисовывается треугольник. В общем насколько хватает фантазии )
У вашего juggler огромный потенциал для развития.
Но очень неудобно каждый раз входить в настройки, чтобы посмотреть есть ли сигнал или нет.
И ответьте пожалуйста на предыдущий ответ по поводу зависаний juggler 1.4, т.к. в версии 1.2 можно только две переменных использовать и у меня уже пару десятков переходных индикаторов и очень хочется их сократить )
Только появился нюанс если в формуле более 2-х переменных, то правильное значение выводится не с первого раза, а необходимо в настройках нажать Ок два раза. С чем это связано не понятно, при этом все переменные берутся с первоисточников . Надо проверить при работающем рынке
Или долгая загрузка или кнопка OK при отсутствии торгов. Другого варианта я пока не вижу - таково архитектура терминала.
Потестируйте, если что -пишите
Индикатор juggler 1.5 работает отлично при работе биржи, ничего не зависает. Количество промежуточных индикаторов сократилось в разы.
Quik стал быстрее загружаться. Конечно было бы не плохо иметь возможность добавлять больше переменных в настройках, но и так неплохо)
Большое спасибо!
PS: не хватает возможности работы с данными предыдущих баров, если бы по двум предыдущим барам можно было бы использовать данные в качестве переменных, то можно было бы создавать небольшие паттерны по своим условиям с учетом времени движения цены (с учетом предыдущих двух баров)
Исходить надо из следующего.
Сам расчет формулы, которую вы задаете в параметрах, не стоит ни одной миллисекунды. Это происходит мгновенно.
Основная проблема в джпглере - это пересчет старых свечей как раз.
Дело в том, что все графики обновляются в произвольной последовательно сти. Например, возможна ситуация, года первым терминал решил обновить сам индикатор джпглере, а не графики, которые им используются. А этом случае джпглере пробует прочесть данные с других графиков, которые ему требуются для расчета и не может - данных там ещё нет. Поэтому джаглер записывает себе в планировщик невыполненных задачу, которую пробует исполнить на следующем тике.
Если графиков для рамчета используется много и это неликвидные инструменты или часть графиков содержит пропущенные данные - джуглерк становится очень трудно.
Он пытается прерасчитать все отложенные задачи -именнл это вкупе с постоянными обращениями в терминал за данными на предмет их обновления и даёт эффект торможения.
Как то кардинально это исправить не представляется возможным - терминал не даёт никаких дополнительных средств.
Поэтому можно пробовать путем усложнив алгоритма выиграть полпроцента производительно сти за счёт меньшей информативности (не показывать значение текущей свечи), но это ничего принципиально не изменит.
Столкнулся с проблемой перегрузки оперативной памяти. Я использую в торговле индикатор дельта и жонглер на 4-х таймах - дневном, часовом, 10М и 2М, т.е. выведено одновременно с вашими индикаторами 4-е окна. На одном тайме используется около десятка жонглера для расчета показателей и вывода сигналов на график. Вчера оперативная память перегрузилась до 4-х гигов и quik завис, хотя оперативки 8 гигов, но quik 32 разрядный и больше 4-х гигов не переваривает. Помогло только удаление окна с таймом 2М и загрузка оперативки снизилась до 2-х гигов. Можно как-нибудь оптимизировать расчеты по дельте и жонглеру? Например, чтобы расчеты выполнялись только в видимой части окна.
Вам я могу посоветовать перенастроить терминал с нуля. Очень похоже на то, что у вас испорчен файл info.wnd
Настройка файла info.wnd с нуля потребует очень много времени по вводу формул с помощью жонглера, весьма трудозатратная и очень длительная операция. И не известно поможет ли данная операция. В принципе если я убираю из загрузки ваши индикаторы, а именно BS.lua, то все грузится мгновенно. Только естественно нет ни дельты, ни крупных сделок, ни моих собственных индикаторов и сигналов, сделанных с помощью жонглера.
Похоже эта проблема будет только нарастать с накоплением данных по дельте в базе данных, т.к. раньше у меня не было такой перегрузки.
А если сделать единую настройку для всех индикаторов, где можно было бы указывать количество последних баров, а также по дате от и до?
Касаемо bs.lua. этот скрипт заказывает с сервера получение таблиц обезличенных сделок по всем инструментам. с которыми вы работаете индикатором Buy/Sell Delta. Сначала эти сделки обрабатываются терминалом, потом скриптом. Причем затраты на обработку самим терминалом больше, чем затраты на обработку скриптом. особенно это касается памяти. Терминал держит всю информацию об обезличенных сделках в памяти. Объем данных. приходящих по каждому ликвидному инструменту. весьма велик. А если этих инструментов много, то заполнение всей доступной памяти есть вполне возможный вариант и ничего с этим сделать просто невозможно - так устроек квик.
Если вы отключаете скрипт BS. lua, то данные с сервера в терминал не едут и все у вас хорошо. только индикаторы не обновляются )))
Всякого рода настройки плана "показывать 10 последних свечей" никакой роли не играют - таблицы обезличенных сделок все равно поедут с сервера в терминал и будут заполнять память. Отрисовывать 10 свечей индикатором, 100 или 10000 - нет никакой разницы.
Чем больше свечей - тем больше отложенных задач.
Возвращаюсь к первому совету: попробуйте на чистом терминале без загрузки вашего wnd файла.
Спасибо за ответы )
Чтобы ограничить расчет индикаторов (любых) требуемым количеством самых последних х свечей, укажите в свойствах диаграммы это количество.
Скриптов, в которых можно указать любое сколь угодно большое количество входящих параметров (графиков) не существует в силу технологических особенностей терминала Квик
Вписать в формулу названия идентификаторов нельзя. Идентификатор может не удовлетворять правилам синтаксиса. Например, быть цифрой или состоять из нескольких слов, разделенных пробелами
Устроит скрипт который настраивается вручную (строку настройки), и сам берет данные из базы котировок, и показывает уже результат на графике, это ведь проще чем juggler. Где такой найти?
2) Версия 1.5 Создал 4 контейнера, проссумировал их в пятом. Постоил график точками.
Проблема: а) глубина отображения на M4 - примерно месяц. Видно что 3 контейнера строят за 2 мес, а один всё портит и дает только 1 мес.
б) более неприятная проблема: внутри дня рассчитываются точки только 10:00 до 17:10-17:30! То есть пропадает закрытие, а интересует именно оно.
В чем может быть проблема и как её исправить?
2. Если на одном из графиков нет данных в каком то периоде, то вычислить значение выражения, заданного вами, в этих свечах невозможно. Мне кажется, что это очевидный факт.
2. Вы правы, но было сложно представить что оказывается котировки TCS есть только до 17.30, и на закрытии 4х часовиков этого было незаметно. Удивлен режимом торгов, возможно есть такиеже подобные акции.
3. Подскажите а как сделать так чтобы после 17.30 по TCS (на SPB) бралась самая последняя котировка Close, или хотя бы среднедневная или чтото аналогичное.
2. Индикатор не имеет понятия (и я тоже) что такое TCS. Он берет значения с исходных графиков/индика торов и вычисляет результат. Собственно и все. Если его можно вычислить - выдает результат. Если невозможно (нет исходных данных) - не выдает
2. См. Пункт 2
2. tcs group holding plc . Можете сами проверить в квике. Проблема в том что индикатор из суммы графиков ABCDE - обрезает временную шкалу по самому "короткому" промежутку, в случае TCS это 17:30 хотя все акции до 19:00. Считаю это некорректная работа juggler. Надо бы учесть этот момент. То есть если например не будет цены закрытия по какому то графику, то её не будет в итоге на juggler. Вот хотелось бы чтобы котировки протягивались до конца временного периода.
3.Кроме того если TCS будет указан в идентификаторе (например поле B), но B не будет использовано в итоговой формуле - временной диапазон всё равно будет обрезан! Возможно это стоит исправить в коде.
1/А. Уважаемый Михаил, а у вас нет решений для переворота графика?
Готового решения нет. Зачем его писать, если можно использовать уже имеющееся? На тиковых графиках переворачивать пару мне никогда не приходило в голову, я не могу представить, зачем это нужно и как это можно использовать.
можно с помощью этого индикатора расчитывать значение с двух разных графиков - например разных таймах 10 мин и часовом.
Если нет то подскажите в каком направлении двигаться?
Принципиальных запретов к этому в juggler е нет. Другое дело как интерпретироват ь полученный результат, где математические действия являются результатом обработки таких последовательно й свечей.. В чем смысл , когда одна свеча несёт информацию о часе, а соответствующая ей по номеру является минутной... Я не знаю, но индикатор это посчитает и нарисует.
ДАТА ОПЕРАЦИИ: 12.22.18
ВРЕМЯ ОПЕРАЦИИ (МСК): 15:41:31
карта списания **** **** **** 2859
Смотрите почту
Сможете написать формулу?
IIF (x1,x2,x3) Если x1 истинно, возвращает x2. Иначе возвращает x3
Индикатор для этого не предназначен. Все таки это индикатор, не программа технического анализа.
Жонглера использую с версии 1,6 недавно обновился до 2.1. Заметил странное поведение. Правда не знаю с чем связано, скорее всего с терминалом. Суть простая. Когда фьючерсы ушли на экспирацию, я просто средствами терминала в графике выполнил команду заменить инструмент. После этого жонглер перестал обновляться на новых свечах. Убил окно графика, перестроил все заново, снова работает нормально.
Это даже наверное просто информация к сведению, потому что на ошибку в работе никак не похоже.
Что происходит при замене экспирируемых фьючерсов в терминале на новые, я даже боюсь пробовать представить...
Возможно в вашем случае пропал индентификатор графика. А может все гораздо хуже и в созвездии Льва галактики Центуриона взорвалась сверхновая...
Но квик это чудо-чудное в плане работы с данными))
Поэтому разнести конструкцию в пыль и собрать заново это да, самый действенный способ))
1. Почему не работает свечное представление? (показывается черточки вместо свеч. С барами то же)
2. Нам нужны стандартные Bollinger Bands на основе получившегося индикатора. Как сделать?
Готов проговорить устно, @romanov_ea в телеграмме
1. Терминал не предоставляет такой возможности
2. Путем написания индивидуальной версии индикатора специально для вас, другого варианта не просматривается . Если вас устраивает такой вариант, звоните голосом в Скайп mikemsk
Финам вам даёт не последнюю версию. Последняя 8.6. ее можно взять на ftp.quik.ru и файлы просто положить поверх вашей установленной 8.5. все будет работать.
В версии 8.6 устранены серьезные ошибки.
мне трудно что либо сказать по этому поводу.
Давайте сделаем так.
Вы установите ЧИСТУЮ копию терминала от вашего брокера, и на ней попробуете индикатор. Я думаю, что все будет работать как и прежде
дата и время операции 28.01.2022 карта отправителя *9919 получателя *2629
zetic
Если вы не получили пароль, напишите мне на почту
хочу задать вопрос по теме сразу:
допустим, есть два графика (линия А , линия В).
выражение в juggler задано (A-B)/(A+B)
но линия B заканчивается (перестают поступать данные) в 15-00 или в 17-45 (как евро и долл TOD)
и тогда juggler перестаёт считать,
пытался сделать (A-B+1)/(A+B+1) , но нет... видимо потому что в B не ноль, а нет данных вообще.
мне что-то подсказывает что нужно использовать логические или математические функции, но не знаю как
Пароль я вам отправил.
Касаемо вашего вопроса.
Если вы решили попить чай, но есть только вода, а чайного пакетика нет, то чая вы не попьете.
Так и здесь. Если нет данных и значение одной из переменных в выражении не определено, посчитать само выражение также невозможно, его результат неопределен.
Я сейчас не могу проверить, но заменить отсутствующее значение НАВЕРНОЕ можно функцией IIF:
IIF(B==nil,0,B)
Или проще IIF(B,B,0)
Попробуйте
RSS лента комментариев этой записи