Еще такой вопрос - возможно ли на QLUA сделать какой-либо производный расчет от графиков инструментов, и перенести его в график QUIK для визуализации? Ну например, то же отношение цен закрытия одного актива к другому, посчитанное в QLUA? Ну или любой "самописный" индикатор, который хотелось бы видеть на графике
#6 30.05.2016 10:36:24 Да можно. Вы говорите о функционале индикаторов в справке QLUA.chm раздел "Индикаторы технического анализа" Собственно те примеры которые были приведены выше это и есть примеры индикаторов. В архиве есть readme файл описывающий как ими пользоваться.
В терминологии квика термин график подразумевает под собой визуализацию ряда, которым может быть как поток котировок, как поток параметров, так и функция-индикатор.
Поток параметров и функция-индикатор могут менять свои значения не только в текущей (правой) свече, но и на истории. Даже Поток котировок в экстремальных случаях может изменяться в прошедшем времени, не так ли, Сергей? )))))
Цитата
s_mike@rambler.ru написал: Есть проблема с невозможностью получить информацию о изменении индикатора-источника "задним числом"
Что же тут непонятного? Допустим, сейчас в индикаторе 10000 свечей. В любой момент может измениться не только правая свеча,но и любая\любые предыдущие. Думаю, примеры таких индикаторов приводить не нужно.
Если мы такой индикатор используем в качестве источника данных для расчета других индикаторов,то мы вынуждены на каждом тике
либо просматривать все 10000 свечей индикатора-источника,
либо работать только по текущей правой свече (игнорируя возможные изменения предыдущих свечей)
И тот и иной подходы пригодны лишь для ммм.. "специфических" случаев.
Цитата
s_mike@rambler.ru написал: Есть проблема с невозможностью контроля правильности настройки (изменения настройки) индикаторов-источников данных
Получить настройки одного индикатора из другого действительно нельзя. Но это не относится к вопросу автора темы.
Ну как же не относится?
Читаем графики, рассчитываем что-то исходя из информации на них. И тут пользователь взял да сменил таймфрейм.
Ваш ответ будет "зачем он это сделал, сам дурак. Незачем это контролировать - знаем, плавали.
Может и так. Но странно, в форме подачи заявки вы правильность пользовательского ввода проверяете. И в других местах тоже.
Sergey Gorokhov написал: Михаил, В общем случае как раз таки можно. Ведь речь идет о простом построении индикатора по произвольному набору данных. В частном случае, когда речь идет о сравнении двух разных источников, могут быть проблемы когда в одном источнике есть данные а в другом их нет.
Сергей. Проблем значительно больше, чем вам кажется.
Есть проблема с неизвестным (произвольным) порядком обновления индикаторов
Есть проблема с невозможностью получить информацию о изменении индикатора-источника "задним числом"
Есть проблема с невозможностью контроля правильности настройки (изменения настройки) индикаторов-источников данных
И так далее и далее.
Я сформулировал абсолютно точно: в общем случае невозможно, в простейших частных случаях можно кое-как.
А проблема сравнения двух источников, по одному из которых данные есть, а по второму еще нет - это ерунда. Самая мелкая сложность.
Sergey Gorokhov написал: Ivanco , Да можно. Вы говорите о функционале индикаторов в справке QLUA.chm раздел "Индикаторы технического анализа" Собственно те примеры которые были приведены выше это и есть примеры индикаторов. В архиве есть readme файл описывающий как ими пользоваться.
Ну будет вам, Сергей. Не вводите людей в заблуждение.
Написать индикатор, использующий в качестве исходных данных один или несколько других индикаторов в Квике В ОБЩЕМ СЛУЧАЕ нельзя. Можно только в каких-то частных случаях элементарнейших индикаторов. Да и то с мучениями и заведомо кривым результатом.
Я, создавая и ту и другую таблицу, указываю фильтр бумаг в QUIK, т.е. я, (я так понимал) заказываю на свою локальную машину с сервера указанные данные. Которые и поступают в указанные таблицы.
Т.е., грубо говоря: по SBER мне приходят данные - два раза, а по прочим - один раз.
Или Вы хотите сказать, что с сервера идёт нерегулируемый поток ПОЛНЫХ данных и рабочее место отбирает из него нужное? Но опять же - у меня две таблицы, которые выбирают из полного потока: одна "чуть" больше - другая - "чуть" меньше... НО НЕ ПОЛНЫЙ ПОТОК! я же вижу ВСЕГО 370 тыс записей - это явно НЕ ВЕСЬ поток сделок за день.
Т.е. непонятно...
Но это ладно...
А что в сухом остатке - указать таблицу по какому-то имени - я не могу?
А исходя из какого принципа функция захватывает какую-то конкретную таблицу? М.б. там как-то исхитриться?
У меня нет исходных текстов терминала, но вижу я ситуацию таковой.
Вы заказываете в выводу на экран 10 таблиц обезличенных сделок. На сервер идет заказ на все инструменты, по которым есть отображение хотя бы в одной из заказанных экранных таблиц.
Соответственно в хранилище попадают все данные по всем запрошенным инструментам.
Из луа вы обращаетесь к хранилищу и получаете "таблицу" (это не экранная таблица), содержащую обезличенные сделки по всем доступным (заказанным) инструментам. Никакой привязки к экранным таблицам нет.
Александр написал: В данный момент у меня заполняются две таблицы ("ALL_TRADES") ("Таблица всех сделок").
Одна: все акции ММВБ и вторая: только SBER. (Выбраны обе фильтрами QUIK).
На пятницу 27-05-2016 в них было: в первой около 370 тыс. строк, во второй: около 77 тыс. строк
Мне надо обрабатывать только SBER, причём систематически и часто.
Как мне забирать строки из "маленькой" таблицы?
Я сделал
nLine=GET_NUMBER_OF("ALL_TRADES")
и оно мне даёт 370 тыс., т.е. БОЛЬШУЮ.
Не критичный, конечно вопрос, но всё же...
В экранную таблицу выбираются данные из хранилища по определенному фильтру, который вы указываете руками. Это сделано для удобства восприятия пользователем. Посредством lua вы также выбираете данные из хранилища. Поэтому фильтровать их вы должны сами.
s_mike@rambler.ru написал: библиотеками) эмулируется на раз-два. Формулы Бекуса-Наура + любой интерпретартор этих формул - и вот вам правила. Подключаем семантику - и готов компилятор в Lua. Готовых инструментов для разбора синтаксиса - миллион. Можно и самому написать - сложность синтаксиса qpile LR0.
Конечно, часть встроенных в купайл функций придется реализовать в библиотеке. Но они же элементарные
Где тот фонд, который мне заплатит за кросс-прроцессор? (хохот)
Дык выже сами написали, что проблем нет с таким конвертором. ЗАчем Вам фонд :)
Дмитрий написал: Да нельзя там сделать конвертер. Логика работы у роботов разная будет. В квипл программа идет по кругу, а в луа фунуции обратного вызова работают. Нельзя сделать универсальный конвертер. Можно конвертировать тлько стандартные функции, но не сам весь код программы. Поэтому это еще один довод что нельзя убирать квипл из квика. Слишком много народа на нем работают и простыми методами не смогут перейти на луа
Да можно, конечно.
Купайл примитивен и на луа (вкупе с-библиотеками) эмулируется на раз-два. Формулы Бекуса-Наура + любой интерпретартор этих формул - и вот вам правила. Подключаем семантику - и готов компилятор в Lua. Готовых инструментов для разбора синтаксиса - миллион. Можно и самому написать - сложность синтаксиса qpile LR0.
Конечно, часть встроенных в купайл функций придется реализовать в библиотеке. Но они же элементарные
Где тот фонд, который мне заплатит за кросс-прроцессор? (хохот)
Gridmer написал: если я на QPILE обрабатываю таблицу всех сделок, формирую нужную мне таблицу и экспортирую ее в Эксель по DDE, то, многоуважаемые посочувствуют, зарегистрируют пожелание и все-равно порежут косты...
С использованием луа можно сделать прямой экспорт данных из скрипта в эксель. Этот путь будет значительно короче, чем через построение таблицы в qpile и экспорт уже этой таблицы в эксель через ДДЕ.
И программно он несложен.
----------
Поддержу разработчиков. О балласта нужно избавляться.
В других биржевых программах у каждого графика\таймсерии имеется атрибут NoRescale. При его установке диаграмма перестаёт масштабироваться, опираясь на этот график\таймсерию.
Может быть проблема на очень нелтквидных инструментах и в случае отсутствия подключения к брокеру - тогда есть шанс получить не предыдущую, а более раннюю сессию.
quiky написал: Дату текущей торговой сессии в коде индикатора я могу получить при помощи getTradeDate или getInfoParam, но вот есть ли относительно простой способ получить дату предыдущей сессии?
PS Только начинаю осваивать lua, поэтому заранее прошу прощения, если мой вопрос кому-то покажется слегка туповатым.
здравствуйте.
Пробегитесь по свечам справа налево, преобразуя datetime свечи в дату. Как дата стала отличной от tradedate - вот вам предыдущая сессия
Андрей Латыш написал: Как соединить два терминала (дублирование сделок) у разных брокеров. То есть я в одном терминале делаю сделку, а во втором она дублируется. Такое возможно в QUIK??? Если возможно, то как?? Или где об этом прочитать??
Проверили у себя. Версия 7.2. Строим окна Таблица сообщений, Окно оповещений - размещаем, как нам удобно, закрывает QUIK, открываем, и окна на тех местах, где мы их разместили. Вы как делаете?
Sergey Gorokhov написал: не зная логики скрипта трудно сказать влияет та или иная настройка или нет.
Разве я где-то писал про настройки, влияющие на скрипт с именем XXXXX?
Я писал о настройках сервера/шлюза/остального, которые могут повлиять на работу любого скрипта.
В таком случае, влияют абсолютно все настройки логинов ТС/шлюзов/сервера/прав/терминала. Отправить их все в QLUA не представляется возможным, ровно как и адаптировать робота под каждую из них.
В таком случае рассчитывать на появление скодь- нибудь серьезных программ на встроенным языке нет причин. Только поделки.
Сергей. Вопрос все как у всх мы обсудили и закрыли.
Пришли мы к тому, что на сервере могут быть изменены различные настройки, разрешена или запрещена трансляция кпких- то данных.
Соответственно, если эти настройки явно влияют на поведение пользовательских скриптов рабочего места или даже не дают ему работать, значит система должна дать возможность прочитать все эти настройки. По результатам скрипт или корректирует свой функционал или выдает диагностику и останавливается
Список всех настроек, которые влияют на поведение луа скриптов, спрашивать у меня не нужно. Для этого есть разработчики сервера. Я рекомендую обратиться к ним)))
Я хочу иметь возможность узнать те настройки, которые явно влияют на поведение и функционал скриптов. Раз брокер может их менять - дайте их на чтение из скрипта
Чтобы не ждать очередного "поясните". Медленно и по буквам. Е Способа узнать, включён в шлюзе режим эмуляции, не существует. Поэтому если я хочу, чтобы мой скрипт работал у разных пользователей правильно, я должен забыть о возможности эмуляции рыночных заявок шлюзом и выписать их сам. Потому что мне неизвестно, включена эмуляция или нет. другой пример. Звонит человек, напиши робот с рыночными заявками. Включен у его брокера этот режим и вообще что это такое он не знает.
Как я должен писать робота? Правильно. Эмулировать.
Повторяю вопрос. Какой толк с этой вашей эмуляции?
Андрей 77 написал: Обнаружил ОЧЕНЬ странное поведение QUIK при обработке меток с TRANSPARENT_BACKGROUND = 1. Началось с того, что при включении прозрачности одна метка (buy - 32 bit, зеленый треугольник с альфа каналом) отображается нормально, другая (точно такой же, но красный - sell) вообще практически не отображается. Попытки пересоздать красный треугольник из зеленого к успеху не привели :(. Зато другая метка - красная стрелка размером побольше на черном фоне, прекрасно отображается с прозрачным фоном. Попытка уменьшить ее работает, но до некоторого размера, потом тоже все ломается ...
У квика свои (суверенные) понятия альфа-канала. При включении траспарент бэкграунд прозрачным цветом является цвет правого верхнего пиксела.
Михаил Понамаренко (pmntrade.ru) написал: Хотелось бы, когда-нибудь, в будущем, увидеть возможность создания всплывающего списка (Combo Box) и полей ввода в таблице QLUA.
Михаил. Что мешает сделать комбо-бокс самому? Все возможности для этого qlua предоставляет. За маленьким исключением, которое не слишком существенно.
Сергей Морозов написал: Добрый день. Есть ли в quik возможность на графике измерить изменения в процентах между двумя точками? Например, как в транзаке?
Добрый день.
Встроенного функционала нет. Можете реализовать данную задачу при помощи LUA.
О как!
Егор, расскажите, как при помощи луа написать инструмент, который измеряет расстояние (в пунктах или процентах) между произвольными точками диаграммы quik.
Только пожалуйста без установки меток с заданием предварительно идентификатора графика, запуска скрипта, указания ему идентификатора графика и прочего гумуса : проще воспользоваться калькулятором.
BOOLEAN res SetUpdateCallback (FUNCTION callback_function) В качестве параметра принимает Функция возвращает «true» в случае успешного завершения, иначе – «false».
В каких случаях вернется false, что для этого должно произойти?
Продолжая разговор, давайте зарегистрируем от Вас пожелание чтобы терминал QUIK вообще никак нельзя было настраивать. Тогда у всех будет одинаково и роботы не будут беситься?
Такого предложения от меня не было.
Есть вполне понятная и очевидная проблема: невозможно написать скрипт, который будет одинаково работать на разных копиях рабочего места и с разными серверами брокера.
если
1. вы согласны с ее существованием - регистрируйте, рассматривайте, клянитесь мамой и формулируйте кто вы есть на самом деле после этого.
2. проблемы нет - пишите как ее обойти.
Вместо этого пишете ересь про какие-то высшие благодати.
Текущий подход: наплевать на проблему, лишь бы брокеру было весело.
Подход-заплатка: запретить (программно) брокеру вводить его серверное ПО в режимы, несущие угрозу конечному пользователю
Правильный подход - дать возможность скрипту получать (заказывать) все нужные ему данные. Это касается как данных, имеющихся у сервера, так и описывающее конфигурацию текущего торгового места. Тогда окажется, что и админ сервера доволен, и написать что-то вразумительное можно.
s_mike@rambler.ru написал: Вы когда-нибудь видели в автомобиле кнопку "отстегнуть колеса" ? Она была бы великим благом для шиномонтажа.
Вы когда нибудь видели чтобы производители автомобилей принудительно заставляли шиномонтажников эти колеса менять?
Я говорю о том, что удобства дилера автозавода (в вопросе смены колес) не идут ни в какое сравнение с опасностью такого функционала для конечного пользователя купленного у этого дилера автомобиля.
Поэтому никогда ни в одном автомобиле такая кнопка не появится.
Надежность важнее удобств. Поэтому появление (намеренное) в финансовом ПО дыр, облегчающих жизнь одному отдельно взятому администратору сервера за счет потенциальной угрозы всем конечным пользователям - это нонсенс..
Sergey Gorokhov написал: И мы не считаем это изъяном, а скорее великим благом для решения конкретных задач отдельно взятого брокера.
Возможно, имеет смысл включить в политику компании понятие пользователя рабочего места, чтобы "великие блага" для брокеров не строились за счет общей дырявости всей архитектуры для конечного пользователя.
Вы когда-нибудь видели в автомобиле кнопку "отстегнуть колеса" ? Она была бы великим благом для шиномонтажа.
Михаил если вы считаете то, что у нас нет физической возможности принудительно заставлять брокеров выполнять те или иные настройки дырой в архитектуре то да такая дыра есть. Но извините, если бы один человек мог принудить другого человека что-то делать это уже была бы не демократия.
Сергей.
У брокера, как пользователя вашего ПО, не должно быть возможности использовать заведомо неправильные (вредные) режимы.
Sergey Gorokhov написал: Если нет трансляции pricemax / pricemin то прощупать не представляется возможным. Если есть то достаточно сравнить цены
Вот и получается, что один и тот же скрипт, будучи запущенным у одного брокера, будет прекрасно работать. Будучи запущен у другого - взбесится (не сразу) и введет владельца в убытки.