Добавление функциональности клиентского терминала

Страницы: 1
RSS
Добавление функциональности клиентского терминала, Ввод параметра инструмента по умолчанию
 
Прошу разработчиков рассмотреть вопрос по добавлению следующих изменений в клиентский терминал:
1. На вкладке "дополнительно" окна редактирования инструмента в окно идентификатора автоматически прописывать название окна графика для инструмента верхнего слоя, естественно с возможностью редактирования и считывания прописанного по умолчанию значения строки из этого окна в программном коде индикатора. Это существенно облегчит написание кода индикаторов. В этом случае при обращении к функциям getNumCandles() и getCandlesByIndex() не придется лезть в программный код индикатора для внесения вручную изменений ID инструмента в секции Settings при смене графика инструмента, достаточно будет считать значение по умолчанию. Я, например, не использую более одного графика цены в каждом окне и меня сильно напрягает, что при смене окна и инструмента нужно лезть в программный код индикатора и вносить правки вручную. Сделать же это после присоединения индикатора к графику невозможно, поскольку указанные выше функции я использую в секции Init() и к моменту запуска индикатора эта секция уже должна получить все параметры. Для тех же, кому нужно использовать более одного графика инструмента в окне, останется возможность редактирования значения по умолчанию ручками.

2. Создать в интерфейсе кнопку  с программным кодом, эмулирующим выдачу тика цены для любого инструмента. Это нужно для отладки программного кода индикаторов без подключения к серверу. Особенно это актуально в часы отсутствия торгов.
 
Цитата
VNG_nemo написал:
На вкладке "дополнительно" окна редактирования инструмента в окно идентификатора автоматически прописывать название окна графика для инструмента верхнего слоя,
Поле Идентификатор уникально для каждого графика, а не окна с графиком. То что Вы в одном окне используете один график не значит что остальные тоже так делают. В связи с чем в таком виде мы не можем зарегистрировать пожелание.
Т.е. требуется соблюдение уникальности для каждого отдельного графика в каждом отдельном окне.
Тем более не понятно зачем из индикатора может потребоваться Идентификатор графика на который этот индикатор накладывается, ведь в индикаторе Вы и так можете получить все данные без Идентификатора.
Просьба пояснить этот момент.




Цитата
VNG_nemo написал:
2. Создать в интерфейсе кнопку  с программным кодом, эмулирующим выдачу тика цены для любого инструмента. Это нужно для отладки программного кода индикаторов без подключения к серверу. Особенно это актуально в часы отсутствия торгов.
К сожалению вынуждены отказать т.к. для таких целей существует демо контур.
 
не понятно зачем из индикатора может потребоваться Идентификатор графика на который этот индикатор накладывается, ведь в индикаторе Вы и так можете получить все данные без Идентификатора.
Просьба пояснить этот момент.



что же тут непонятного? Чтобы метки ставить на самого себя без бубна с назначениями идентификатора и передачей идентификатора в параметры.

замечу в скобках, что это уже давно "зарегистрировано", а тут вот здрасьте, "просьба пояснить"
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
не понятно зачем из индикатора может потребоваться Идентификатор графика на который этот индикатор накладывается, ведь в индикаторе Вы и так можете получить все данные без Идентификатора.
Просьба пояснить этот момент.



что же тут непонятного? Чтобы метки ставить на самого себя без бубна с назначениями идентификатора и передачей идентификатора в параметры.

замечу в скобках, что это уже давно "зарегистрировано", а тут вот здрасьте, "просьба пояснить"

Михаил, позвольте но в тексте автора нет ничего про метки.
 
Цитата
Sergey Gorokhov написал:
Поле Идентификатор уникально для каждого графика, а не окна с графиком. То что Вы в одном окне используете один график не значит что остальные тоже так делают. В связи с чем в таком виде мы не можем зарегистрировать пожелание.
Я не случайно указал, что идентификатор нужно добавить ТОЛЬКО для инструмента верхнего уровня. Будь в одном окне хоть миллион графиков, идентификатор будет прописан ТОЛЬКО у одного инструмента или индикатора по желанию пользователя. Остальные останутся пустыми. Так что, это никак не скажется на уникальности.
Цитата
Sergey Gorokhov написал:
Тем более не понятно зачем из индикатора может потребоваться Идентификатор графика на который этот индикатор накладывается, ведь в индикаторе Вы и так можете получить все данные без Идентификатора.Просьба пояснить этот момент.
Я выше не зря указал две функции без передачи идентификатора в которые НЕВОЗМОЖНО получить доступ к данным свечей. Если Вы мне укажете такой механизм без прописывания руками идентификатора графика в коде индикатора при смене инструмента (графика свечей), буду очень благодарен.
Может как-то сумбурно объяснил, попробую "на пальцах". Есть индикатор. В его коде есть указанные выше функции, расположенные в Init(), что исключает возможность прописывания идентификатора после присоединения его к графику (сразу в момент присоединения вылетит ошибка). Простой пользователь (не разработчик) хочет просто кинуть индикатор на любой график без танцев с бубном. Но при такой ситуации, которая есть на данный момент, у него это не получится. Мало того, что надо прописать идентификатор на вкладке "дополнительно" - с этим можно как-то смириться, но нужно еще открыть код индикатора и прописать  идентификатор в секции Settings, что для рядового пользователя крайне проблематично. В случае же если в данном окошке для графика первого слоя будет прописан идентификатор по умолчанию, в программном коде достаточно будет просто считать эту строчку и проблема будет закрыта. Как это может отразиться на уникальности я даже представить себе не могу. Кроме того, можно запретить редактирование этой строки из программного кода, оставить только возможность редактирования руками в терминале.
Цитата
Sergey Gorokhov написал:
что же тут непонятного? Чтобы метки ставить на самого себя без бубна с назначениями идентификатора и передачей идентификатора в параметры.замечу в скобках, что это уже давно "зарегистрировано", а тут вот здрасьте, "просьба пояснить"
Честно говоря, я не понял о каких метках идет речь. Большая просьба кинуть ссылку на "давно "зарегистрировано"".
 
Цитата
Sergey Gorokhov написал:
К сожалению вынуждены отказать т.к. для таких целей существует демо контур.
Прошу пояснить что есть "демоконтур" или пнуть, куда обратиться за разъяснениями.
 
Цитата
VNG_nemo написал:
Я выше не зря указал две функции без передачи идентификатора в которые НЕВОЗМОЖНО получить доступ к данным свечей. Если Вы мне укажете такой механизм без прописывания руками идентификатора графика в коде индикатора при смене инструмента (графика свечей), буду очень благодарен.

Вместо getNumCandles() есть функция Size() вызвав которую в индикаторе, Вы получите количество свечек.
и вместо getCandlesByIndex() в индикаторе надо использовать функции O, H, L, C, V, T которые вернут данные о свечке по ее индексу на которую наложен индикатор.
Подробней в документации QLUA.chm
-Индикаторы технического анализа
--Функции и глобальные переменные скрипта индикатора
---Функции для доступа к источнику данных

Цитата
VNG_nemo написал:
Прошу пояснить что есть "демоконтур" или пнуть, куда обратиться за разъяснениями.
https://arqatech.com/ru/support/demo/
 
Цитата
Sergey Gorokhov написал:
Вместо getNumCandles() есть функция Size() вызвав которую в индикаторе, Вы получите количество свечек.
Принимается.
Цитата
Sergey Gorokhov написал:
вместо getCandlesByIndex() в индикаторе надо использовать функции O, H, L, C, V, T которые вернут данные о свечке по ее индексу на которую наложен индикатор.
Нужны не отдельные данные по каждой свечке, а упорядоченная (проиндексированная по номеру свечки) таблица всех значений всех свечей для дальнейшего обращения к ней. Функция для работы с источником данных - это усложнение кода и, соответственно, увеличение времени обработки данных. Мой код делает все манипуляции в три строки. Вы же предлагаете обработать каждую свечу отдельно в интерпретаторе, затем свести все данные в одну таблицу и уже работать с ней вместо того, чтобы обратиться единожды к оптимизированной и откомпилированной сишной функции. Мне это напоминает удаление гланд через задницу.
 
Цитата
VNG_nemo написал:
Нужны не отдельные данные по каждой свечке, а упорядоченная (проиндексированная по номеру свечки) таблица всех значений всех свечей для дальнейшего обращения к ней.
Зачем? Если Вы в любой момент по индексу и так можете достать нужные данные без лишних функций.

Цитата
VNG_nemo написал:
Функция для работы с источником данных - это усложнение кода и, соответственно, увеличение времени обработки данных.
Есть доказательства или это просто мысли? Если просто мысли тогда прошу воздержаться во избежания дезинформации других пользователей.

Цитата
VNG_nemo написал:
Вы же предлагаете обработать каждую свечу отдельно в интерпретаторе, затем свести все данные в одну таблицу и уже работать с ней вместо того, чтобы обратиться единожды к оптимизированной и откомпилированной сишной функции. Мне это напоминает удаление гланд через задницу.

Что такого Вы делаете с каждой свечкой отдельно? Зачем Вам захламлять лишний кусок памяти?
Вы в любой момент можете получить любой параметр нужной свечки, без предвариетельного хранения.
В наших примерах, в некоторых индикаторах, тоже требуется хранение свечек, но это все легко решаемо через O, H, L, C, V, T значит и у Вас тоже этого можно избежать.
И сейчас именно использование идентификаторов выглядит как
Цитата
VNG_nemo написал: удаление гланд через задницу.
т.к. Вы через идентификаторы пытаетесь получить данные которые уже и так есть без каких либо идентификаторов.
 
Цитата
Sergey Gorokhov написал:
Зачем? Если Вы в любой момент по индексу и так можете достать нужные данные без лишних функций.
Как пример - интерактивная работа с метками. Где в таблице данных метки индекс свечи? Я переместил метку, она привязана ко времени и цене свечи. Я считал эти данные. Мне не нужны раздельные данные по времени, мне нужен только индекс свечи, к которой привязана метка. Укажите мне легкий способ получения такого индекса.
Цитата
Sergey Gorokhov написал:
Есть доказательства или это просто мысли? Если просто мысли тогда прошу воздержаться во избежания дезинформации других пользователей.
Хорошо, воздержусь. Ибо доказывать, что скорость работы откомпилированной сишной функции выше скорости работы интерпретатора занятие неблагодарное.
Цитата
Sergey Gorokhov написал:
Что такого Вы делаете с каждой свечкой отдельно? Зачем Вам захламлять лишний кусок памяти?
Уже указал раньше - не нужны данные свечек, нужны индексы свечек к которым привязаны метки. И это не какая-то отдельная задача, а кусок кода комплексной задачи. Работать же с метками, привязанными ко времени неудобно в силу разрастания программного кода если нужно получить данные свечи. Гораздо эффективнее заранее проиндексировать все свечки по времени, получая доступ к индексу свечи по этому времени для получения конкретной свечи и работой с ее данными. Одно обращение по индексу
-получить индекс свечи по смещению в таблице
вместо следующей последовательности действий:
-сравнить время и дату каждой свечи со временем и датой , полученными из данных метки В ЦИКЛЕ
-получить индекс свечи если совпало
Уверен, что вопрос эффективности данных действий очевиден.
А учитывая, что:
- индикатор работает в потоке терминала
- разработчики всеми правдами и неправдами открещиваются от того, чтобы дать программный доступ к таким элементарным объектам как прямая, луч, канал, полигон и т.д. и предлагают все это заменить тормозной работой с метками,
становится очевидно, что чаяния простых пользователей для разработчиков и компании не на первом месте, хотя в других системах торговли уже давно такие сервисы предоставляются. И потому пользователи часто срываются, как я ранее, хотя, конечно, и не стоило этого делать. Но, полазив по форуму и найдя обещания о внесении изменений "вот-вот, скоро в ближайшей версии", начинаешь нервно про себя материться и плеваться.
 
VNG_nemo,
Задача не так решается.
Вы все равно используете цикл for по всем свечкам, какая разница что в этом цикле будет t из getCandlesByIndex или T(k)?
Чисто по результату разницы никакой, зато никаких идентификаторов.
 
Цитата
Sergey Gorokhov написал:
какая разница что в этом цикле будет t из getCandlesByIndex или T(k)?
Разница существенная, поскольку для получения первоначальной t из getCandlesByIndex используется сишная откомпилированная функция, а для получения всех значений первоначальной Т(к) мне придется использовать цикл интепретатора, что в разы медленнее, а учитывая, что при запуске пересчет ведется аж два раза, картина еще печальнее. Да, переиндексировать мне придется обе таблицы и это займет примерно одинаковое время. Но это второе действие.  
 
Цитата
VNG_nemo написал:
мне придется использовать цикл интепретатора
Вы и так используете цикл, что с getCandlesByIndex, что с Т(к).

Цитата
VNG_nemo написал:
что в разы медленнее
по поводу "медленнее" уже было сказано, нет доказательств, значит не надо так говорить.

Цитата
VNG_nemo написал:
Да, переиндексировать мне придется обе таблицы и это займет примерно одинаковое время. Но это второе действие.  
Это с getCandlesByIndex второе действие, а с Т(к) это одно действие.

В общем пробуйте, а потом поговорим.
Страницы: 1
Читают тему
Наверх