Germany | Finland | Saint Petersburg | Drive

Juggler: жонглирование графиками

4.8/5 оценка (8 голосов)
  • Размер: 103.15 KB
  • Версия: 1.5
  • Просм: 1915
  • Добавлено: 06.12.16
  • Скачано: 461
  • Изменено: 06.04.18

Индикатор, позволяющий выводить на график результат математических и логических действий над несколькими  (до 5) другими индикаторами или графиками котировок инструментов.

 

Описание индикатора здесь.

Порядок установки:

  1. В папке терминала QUIK создаем подпапку LuaIndicators (если её там еще нет)
  2. помещаем в нее файл juggler.lua (или juggler_full.lua, если вам известен пароль от полной версии)
  3. Библиотеку bot4sale.dll кладем в папку терминала quik.
  4. Добавляем индикатор на график
  5. Заходим в параметры и настраиваем идентификаторы исходных графиков и вычисляемое выражение.

Архитектура терминала устроена таким образом, что результат расчета juggler может быть выведен как сразу, так и на первом пришедшем тике по главному инструменту. Если график сразу не построился и сделок по главному инструменту нет - просто зайдите в настройки и ничего не меняя, нажмите кнопку <OK>

Демонстрационная версия работает на таймфреймах от 1 до 4 минут. Полная версия ограничений не имеет.

Полную версию можно получить, поблагодарив автора. Благодарность, выраженную в дензнаках, следует переводить на вот эту карту:

А вот размер этой благодарности определяйте на своё усмотрение. На вопрос "сколько?" ответ будет с длинным количеством нулей, поэтому лучше его не задавать ))) Карта действительна и актуальна.

 

 

История версий:

Версия Изменения
1.5

Ускорена загрузка индикатора при старте терминала

1.4

Количество исходных графиков/индикаторов увеличено до 5. Использовать их можно в любых комбинациях

1.3

Адаптировано для работы с bot4sale.dll

Исправлены мелкие недочеты

1.2 Первая публичная версия
Комментарии   
# depaval 07.01.2017 01:01
Здравствуйте, отличный индикатор! Хотелось бы версию, которая работает дольше 10 мин:)
Ответить | Ответить с цитатой | Цитировать
# admin 07.01.2017 10:15
Добрый день.

С этим нет никаких проблем. В статье есть вся информация по вашему вопросу.
Ответить | Ответить с цитатой | Цитировать
# depaval 07.01.2017 12:15
Здравствуйте, если платеж на пластиковую карту сопровождается проблемами, сообщите пожалуйста.
ДАТА ОПЕРАЦИИ: 07.01.17
ВРЕМЯ ОПЕРАЦИИ (МСК): 00:49:00
Ответить | Ответить с цитатой | Цитировать
# admin 07.01.2017 15:04
Проблема одна - в 0-49 я обычно сплю, когда в Москве )

Пароль отправлен вам на почту
Ответить | Ответить с цитатой | Цитировать
# depaval 07.01.2017 15:19
Михаил, спасибо за индикатор!
Ответить | Ответить с цитатой | Цитировать
# Юрий77 13.04.2017 09:28
Отличный Скрипт - а можно добавить расчет в поле гафика, где (O,H,L,C,V) - ну например ............(Н+ L)/2 ?
или добавить этот расчет в выражение ?
Тогда бы вообще отлично было)))
Ответить | Ответить с цитатой | Цитировать
# admin 13.04.2017 09:42
Юрий, а можно как-то попроще вашу мысль сформулировать?

Я ничего не понял..
Ответить | Ответить с цитатой | Цитировать
# Юрий77 13.04.2017 09:55
брать значение цены не (O,H,L,C,V) - а допустим среднее
(Н+ L)/2 ,
Можно конечно добавить ещё один график и вычислить среднее - но не хочется городить графики.
Ответить | Ответить с цитатой | Цитировать
# admin 13.04.2017 10:18
Все-таки лучше сделать еще один индикатор, который бы выводил (Н+ L)/2 , и уже его использовать в juggler'е
Ответить | Ответить с цитатой | Цитировать
# admin 22.01.2018 23:08
В версии 1.4 и старше можно
Ответить | Ответить с цитатой | Цитировать
# Александр5555 17.04.2017 19:27
Изначально, да и по сейчас индикатор предназначен для вычисления коэффициентов ( неких ) из общей таблицы . Михаил , " требую " компенсации . Хотя из твоей уж очень обширной библиотеки почти всё есть . Слежу , спс...
Ответить | Ответить с цитатой | Цитировать
# Виталий7 05.10.2017 22:24
Карта списания 549866XXXXXX9300
Карта зачисления 532130XXXXXX7589
Срок исполнения до трех банковских дней
Ответить | Ответить с цитатой | Цитировать
# admin 05.10.2017 23:37
Пароль ушел вам почтой
Ответить | Ответить с цитатой | Цитировать
# Васейник 13.01.2018 05:28
Попробовал пробную - она точно полнофункционал ьная? Достаточно глючная штука (или квик сам по себе).

Простой пример - на бирже торгуется етфы с долларовой базой, но котировки пересчитаны в рубль. Задача получить обратно долларовую цену. Значит в окно диаграммы кидаем график USDRUB, именнуем их - получаем то что надо.

Проблемы на память:

1. Из есть канал-связанная таблица, то при смене тикера, все слетает.
2. Процентный график по juggler не строится, потому как за основу берется цена базового актива, а не jugglera
3. Если сделать несколько графиков с разными инструментами и в каждом сделать juggler то они будут копировать друг друга. Так и не понял как сделать независымые параметры :(
4. Хотел сделать вот ещё как - сравнить ДВА разных актива друг с другом через процентный перформанс относительно произвольной базы расчета. Причем сделать это через единую валюту.

То есть например два актива в рублях. Считаем через jug их долларовую цену. (jug), далее построить процетный прирост относительно единой даты с базой в 100% (или 0%)... а далее подневно ещё например подсичтать дельту между ними (бетту?)... банальный пример - индекс и актив сравнить между собой.

ps неплохо бы было так сравнивать 2-3-4-5 графиков, активы в разных валютах приведенные к общему. пишите если что на смартлаб обнову.
Ответить | Ответить с цитатой | Цитировать
# admin 13.01.2018 10:52
Здравствуйте.

Вы слишком торопитесь выводами. Давайте поймем по пунктам.

1. ,Нет, не слетает. Дождитесь первого пришедшего тика по главному инструменту и все построится. Объяснение этого феномена приведено в статье.

2. Я не понял, что вы имели ввиду. Попробуйте объяснить на примере.

3. Вы наверное размножали диаграммы по Ctrl-N и потом меняли инструменты? Тогда все правильно - вы же не поменяли в настройках juggler идентификаторы графиков. Идентификаторы остались прежними и вы видите все тот же результат, посчитанный по старым источникам.

4. Я человек дремучий и столь сложные понятия как процентный перформанс мне недоступны )) лучше уж по старинке, на пальцах рассказывайте..

5. кошмар-кошмар. Если кто-то понял написанное - растолкуйте мне....

p.s. Если бы понять на каком-то примере, что вы хотите и идея мне понравится, можно и сделать. Но пока я понимаю только слова. Смысл непонятен и экстрасенса рядом нет.
Ответить | Ответить с цитатой | Цитировать
# Дмитрий_2 25.03.2018 17:39
Михаил, есть несколько вопросов по juggler:
1) есть ли возможность посредством пользовательско го интерфейса обращаться к функциям O, H, L, C, T конкретно заданной свечи, т.е. когда требуется произвести арифметические операции с ценами последней свечи первого инструмента и ценами предпоследней свечи второго инструмента?
2) что такое "Номер линии" со значением "0.0" и как его можно использовать?
3) возможно ли применение в пользовательско м интерфейсе каких-либо агрегирующих функций, например, среднего значения от цен O, H, L, C по всем (части) свеч-ам (-ей) инструмента?
Ответить | Ответить с цитатой | Цитировать
# admin 25.03.2018 19:24
Дмитрий,

  • Нет, не предусмотрено. Невозможно (да и нет никакого смысла) вкладывать в индикатор все возможность программы технического анализа. Если нужны более сложные преобразования и расчеты - смотрите в направлении amibroker, weath-Lab и пр.
  • Номер линии. Многие индикаторы состоят из нескольких линий. Пример - Боллинджер. Указав номер линии (они в настройках индикатора боллинджер идут по порядку) можно делать расчет по определенной линии индикатора.
  • Впрямую нельзя. Но что мешает в качестве источника для расчета взять не график цены, а индикатор простого скользящего среднего по нужной вам цене (o,h,l,c)?
Ответить | Ответить с цитатой | Цитировать
# Nordon 31.03.2018 23:22
Здравствуйте, Михаил!
Новая версия очень сильно грузит QUIK, прошлая версия 1.2. в разы быстрее загружалась, не зависимо от того сколько индикаторов Juggler было в программе. Сейчас с одним индикатором грузится больше минуты, а если их сделать 5-10, то невозможно дождаться загрузки программы.
Когда первоначально в Quik создаешь свои индикаторы, то нормально работает, но только стоит перезагрузить Quik, то все зависает.
Что посоветуете для повышения производительно сти?
Ответить | Ответить с цитатой | Цитировать
# Nordon 02.04.2018 10:51
Здравствуйте!
Я использую juggler также для вывода на сам график цены сигналы на покупку или продажу. Сигналы отображаются, но во время движения цены, пока не закрылся бар возникает много сигналов и после закрытия бара в итоге сигнала нет, но он все равно отображается. Для того чтобы реально посмотреть есть сигнал или нет, то необходимо входить в настройки графика и нажимать ОК, только тогда нормально начинают отображаться сигналы. Как сделать, так чтобы не входить постоянно в настройки графика в момент движения цены? У меня стоит старая версия 1.2, т.к. новая очень сильно подвисает.
Ответить | Ответить с цитатой | Цитировать
# admin 02.04.2018 11:41
А каким способом вы выводите на график сделки посредством juggler? Я даже не подозревал, что так можно )))
Ответить | Ответить с цитатой | Цитировать
# Nordon 02.04.2018 12:43
Да с помощь вашего juggler это очень легко. Вывожу треугольнику сверху или снизу бара если достигаются определенные условия.
Например, идентификатор графика цены называю H. Ниже графика создаю необходимый индикатор на основе juggler и он кстати во время движения цены работает адекватно. Потом в области графика задаю сигналы на основе juggler с помощью треугольников с использованием простой формулы IIF(B==-1,A+A*0 .007), где A - H, т.е. наш бар, а B - это показатели ранее созданного индикатора juggler. Если условия на покупку совпадают, то на графике под баром отрисовывается треугольник. В общем насколько хватает фантазии )
У вашего juggler огромный потенциал для развития.
Но очень неудобно каждый раз входить в настройки, чтобы посмотреть есть ли сигнал или нет.
И ответьте пожалуйста на предыдущий ответ по поводу зависаний juggler 1.4, т.к. в версии 1.2 можно только две переменных использовать и у меня уже пару десятков переходных индикаторов и очень хочется их сократить )
Ответить | Ответить с цитатой | Цитировать
# Nordon 07.04.2018 18:26
Спасибо Михаил за версию 1.5. Теперь намного быстрее работает QUIK.
Только появился нюанс если в формуле более 2-х переменных, то правильное значение выводится не с первого раза, а необходимо в настройках нажать Ок два раза. С чем это связано не понятно, при этом все переменные берутся с первоисточников . Надо проверить при работающем рынке
Ответить | Ответить с цитатой | Цитировать
# admin 07.04.2018 19:15
За все приходится платить.

Или долгая загрузка или кнопка OK при отсутствии торгов. Другого варианта я пока не вижу - таково архитектура терминала.

Потестируйте, если что -пишите
Ответить | Ответить с цитатой | Цитировать
# Nordon 10.04.2018 07:48
Здравствуйте!
Индикатор juggler 1.5 работает отлично при работе биржи, ничего не зависает. Количество промежуточных индикаторов сократилось в разы.
Quik стал быстрее загружаться. Конечно было бы не плохо иметь возможность добавлять больше переменных в настройках, но и так неплохо)
Большое спасибо!
PS: не хватает возможности работы с данными предыдущих баров, если бы по двум предыдущим барам можно было бы использовать данные в качестве переменных, то можно было бы создавать небольшие паттерны по своим условиям с учетом времени движения цены (с учетом предыдущих двух баров)
Ответить | Ответить с цитатой | Цитировать
# MK 27.04.2018 13:20
Здравствуйте! Хочу присоединиться к Nordon в погоне за работоспособнос тью джаглера) Михаил, могли бы вы сделать кнопку в джаглере с функцией расчета по уже сформировавшейс я свече(параметру ), т.к. расчеты в реальном времени замедляют квик, или он вообще зависает. Что я имею ввиду: на формирующейся свече расчеты в реальном времени происходить не будут(на них обычно никто не смотрит), а когда свеча сформируется произойдет расчет(по факту). Джаглер будет работать с запозданием на 1 период, что на малых ТФ не критично. Я полагаю, что такой расчет будет занимать меньше ресурсов и позволит квику работать стабильнее. Как только 2 входящих параметра "сформировались ", происходит их расчет, т.е. на каждую свечу 1 операция. Как то так)
Ответить | Ответить с цитатой | Цитировать
# admin 27.04.2018 14:06
Большое спасибо за предложение.

Исходить надо из следующего.

Сам расчет формулы, которую вы задаете в параметрах, не стоит ни одной миллисекунды. Это происходит мгновенно.

Основная проблема в джпглере - это пересчет старых свечей как раз.

Дело в том, что все графики обновляются в произвольной последовательно сти. Например, возможна ситуация, года первым терминал решил обновить сам индикатор джпглере, а не графики, которые им используются. А этом случае джпглере пробует прочесть данные с других графиков, которые ему требуются для расчета и не может - данных там ещё нет. Поэтому джаглер записывает себе в планировщик невыполненных задачу, которую пробует исполнить на следующем тике.

Если графиков для рамчета используется много и это неликвидные инструменты или часть графиков содержит пропущенные данные - джуглерк становится очень трудно.

Он пытается прерасчитать все отложенные задачи -именнл это вкупе с постоянными обращениями в терминал за данными на предмет их обновления и даёт эффект торможения.

Как то кардинально это исправить не представляется возможным - терминал не даёт никаких дополнительных средств.

Поэтому можно пробовать путем усложнив алгоритма выиграть полпроцента производительно сти за счёт меньшей информативности (не показывать значение текущей свечи), но это ничего принципиально не изменит.
Ответить | Ответить с цитатой | Цитировать
# Nordon 03.05.2018 07:36
Здравствуйте!
Столкнулся с проблемой перегрузки оперативной памяти. Я использую в торговле индикатор дельта и жонглер на 4-х таймах - дневном, часовом, 10М и 2М, т.е. выведено одновременно с вашими индикаторами 4-е окна. На одном тайме используется около десятка жонглера для расчета показателей и вывода сигналов на график. Вчера оперативная память перегрузилась до 4-х гигов и quik завис, хотя оперативки 8 гигов, но quik 32 разрядный и больше 4-х гигов не переваривает. Помогло только удаление окна с таймом 2М и загрузка оперативки снизилась до 2-х гигов. Можно как-нибудь оптимизировать расчеты по дельте и жонглеру? Например, чтобы расчеты выполнялись только в видимой части окна.
Ответить | Ответить с цитатой | Цитировать
# admin 03.05.2018 08:33
К сожалению, терминал не предоставляет средств для получения количества видимых свечей на диаграмме.

Вам я могу посоветовать перенастроить терминал с нуля. Очень похоже на то, что у вас испорчен файл info.wnd
Ответить | Ответить с цитатой | Цитировать
# Nordon 03.05.2018 08:58
Понятно, очень жаль.
Настройка файла info.wnd с нуля потребует очень много времени по вводу формул с помощью жонглера, весьма трудозатратная и очень длительная операция. И не известно поможет ли данная операция. В принципе если я убираю из загрузки ваши индикаторы, а именно BS.lua, то все грузится мгновенно. Только естественно нет ни дельты, ни крупных сделок, ни моих собственных индикаторов и сигналов, сделанных с помощью жонглера.
Похоже эта проблема будет только нарастать с накоплением данных по дельте в базе данных, т.к. раньше у меня не было такой перегрузки.
А если сделать единую настройку для всех индикаторов, где можно было бы указывать количество последних баров, а также по дате от и до?
Ответить | Ответить с цитатой | Цитировать
# admin 03.05.2018 12:11
То что файл info.wnd у вас поврежден - практически наверняка.

Касаемо bs.lua. этот скрипт заказывает с сервера получение таблиц обезличенных сделок по всем инструментам. с которыми вы работаете индикатором Buy/Sell Delta. Сначала эти сделки обрабатываются терминалом, потом скриптом. Причем затраты на обработку самим терминалом больше, чем затраты на обработку скриптом. особенно это касается памяти. Терминал держит всю информацию об обезличенных сделках в памяти. Объем данных. приходящих по каждому ликвидному инструменту. весьма велик. А если этих инструментов много, то заполнение всей доступной памяти есть вполне возможный вариант и ничего с этим сделать просто невозможно - так устроек квик.

Если вы отключаете скрипт BS. lua, то данные с сервера в терминал не едут и все у вас хорошо. только индикаторы не обновляются )))

Всякого рода настройки плана "показывать 10 последних свечей" никакой роли не играют - таблицы обезличенных сделок все равно поедут с сервера в терминал и будут заполнять память. Отрисовывать 10 свечей индикатором, 100 или 10000 - нет никакой разницы.
Ответить | Ответить с цитатой | Цитировать
# Nordon 03.05.2018 12:17
Дело с зависанием не в обработке обезличенных сделок, а в индикаторе жонглер, чем больше баров, тем больше зависает комп
Ответить | Ответить с цитатой | Цитировать
# admin 03.05.2018 12:25
О причинах повышенной нагрузки при большом количестве свечей на графике я вам уже писал ранее.
Ответить | Ответить с цитатой | Цитировать
# Nordon 03.05.2018 12:50
Тогда не очень понятно каким образом количество баров играет роль на загрузку процессора. Если я выключаю жонглер или снижаю количество баров путем увеличения тайма, то он перестает зависать, при этом поток обезличенных сделок не снизился и получается не сильно влияет на загрузку процессора. У меня чем больше индикаторов, созданных жонглером и чем меньше таймфрейм, то тем выше загрузка процессора, больше всего влияет уменьшение тайма, т.к. количество баров, по которым надо делать расчеты значительно увеличивается
Ответить | Ответить с цитатой | Цитировать
# admin 03.05.2018 13:43
Читайте комментарий от 27.04.2018 14:06

Чем больше свечей - тем больше отложенных задач.

Возвращаюсь к первому совету: попробуйте на чистом терминале без загрузки вашего wnd файла.
Ответить | Ответить с цитатой | Цитировать
# Nordon 03.05.2018 15:39
Понятно, поэтому было бы неплохо иметь возможность выбирать количество баров (свечей).
Спасибо за ответы )
Ответить | Ответить с цитатой | Цитировать
# admin 03.05.2018 17:28
Видимо, я слишком далеко полез в детали и стало непонятно, раз вы опять вернулись к ачалу.

Чтобы ограничить расчет индикаторов (любых) требуемым количеством самых последних х свечей, укажите в свойствах диаграммы это количество.
Ответить | Ответить с цитатой | Цитировать
# Виктор200 20.06.2018 00:01
Подскажите. Если требуется построить условный индекс из 20 акций. То в последних версиях можно разом задать 5 акций.Далее 4 контейнера и 1 общий суммирующий. Что не очень удобно. Планируете ли вы сделать скрипт который не имеет ограничений и просто суммирует котирки с определенными весами (не нужны косинусы, корни и так далее). Проще вписать в строку формулу с исходными индетификаторам и графика и готов результат, чем каждый раз задавать ABCDE...возможн о вы посоветуете такой скрипт с другого ресурса или некоторую заготовку для допиливания. Спасибо.
Ответить | Ответить с цитатой | Цитировать
# admin 20.06.2018 06:38
Здравствуйте.

Скриптов, в которых можно указать любое сколь угодно большое количество входящих параметров (графиков) не существует в силу технологических особенностей терминала Квик

Вписать в формулу названия идентификаторов нельзя. Идентификатор может не удовлетворять правилам синтаксиса. Например, быть цифрой или состоять из нескольких слов, разделенных пробелами
Ответить | Ответить с цитатой | Цитировать
# Виктор200 21.06.2018 17:27
1) "не существует в силу технологических особенностей терминала Квик" а сколько можно вписать? 20 можно?
Устроит скрипт который настраивается вручную (строку настройки), и сам берет данные из базы котировок, и показывает уже результат на графике, это ведь проще чем juggler. Где такой найти?

2) Версия 1.5 Создал 4 контейнера, проссумировал их в пятом. Постоил график точками.
Проблема: а) глубина отображения на M4 - примерно месяц. Видно что 3 контейнера строят за 2 мес, а один всё портит и дает только 1 мес.
б) более неприятная проблема: внутри дня рассчитываются точки только 10:00 до 17:10-17:30! То есть пропадает закрытие, а интересует именно оно.

В чем может быть проблема и как её исправить?
Ответить | Ответить с цитатой | Цитировать
# admin 22.06.2018 08:42
1. Я не видел такой скрипт в готовом виде. Могу сделать на заказ.

2. Если на одном из графиков нет данных в каком то периоде, то вычислить значение выражения, заданного вами, в этих свечах невозможно. Мне кажется, что это очевидный факт.
Ответить | Ответить с цитатой | Цитировать
# Виктор200 22.06.2018 19:35
1. Он должен быть достаточно простым. Не готов два раза платить. Сам бы попробовал из готового переделать под себя. Ведь это не сложно должно быть.
2. Вы правы, но было сложно представить что оказывается котировки TCS есть только до 17.30, и на закрытии 4х часовиков этого было незаметно. Удивлен режимом торгов, возможно есть такиеже подобные акции.
3. Подскажите а как сделать так чтобы после 17.30 по TCS (на SPB) бралась самая последняя котировка Close, или хотя бы среднедневная или чтото аналогичное.
Ответить | Ответить с цитатой | Цитировать
# admin 22.06.2018 20:18
1. Пишите ТЗ, если хотите индивидуальный индикатор для собственных нужд. Получить бесплатно колбасу в магазине сегодня невозможно, даже если вчера вы ее уже покупали за деньги.

2. Индикатор не имеет понятия (и я тоже) что такое TCS. Он берет значения с исходных графиков/индика торов и вычисляет результат. Собственно и все. Если его можно вычислить - выдает результат. Если невозможно (нет исходных данных) - не выдает

2. См. Пункт 2
Ответить | Ответить с цитатой | Цитировать
# Виктор200 22.06.2018 21:36
1. Хотелось бы просто пример кода который берет данные котировки в определенном фрейме по тикеру, и выводит это на график. В коде разбирусь просуммировать смогу сам.

2. tcs group holding plc . Можете сами проверить в квике. Проблема в том что индикатор из суммы графиков ABCDE - обрезает временную шкалу по самому "короткому" промежутку, в случае TCS это 17:30 хотя все акции до 19:00. Считаю это некорректная работа juggler. Надо бы учесть этот момент. То есть если например не будет цены закрытия по какому то графику, то её не будет в итоге на juggler. Вот хотелось бы чтобы котировки протягивались до конца временного периода.

3.Кроме того если TCS будет указан в идентификаторе (например поле B), но B не будет использовано в итоговой формуле - временной диапазон всё равно будет обрезан! Возможно это стоит исправить в коде.
Ответить | Ответить с цитатой | Цитировать
# 2wsxzaq1 18.07.2018 15:26
На тиковом графике полная версия индикатора работает?
Ответить | Ответить с цитатой | Цитировать
# admin 18.07.2018 16:12
Нет. И это в принципе невозможно, поскольку сделки по инструментам проходят в разные моменты времени и их невозможно совместить
Ответить | Ответить с цитатой | Цитировать
Добавить комментарий