Чтение буферов индикатора, установленного на чарт - страница 6

 
Andrey Khatimlianskii:

Покажите пример, в котором была бы нужна событийная модель в сочетании с отдачей данных советнику.

У меня есть вероятностная функция, которая показывает уровень наиболее возможного обратного отскока цены. Такой подход подсмотрел в HFT, что когда цена резко скакнула на 10 пунктов вверх, то высока вероятность на протяжении ближайшего времени, что она отскочит обратно. Чем дальше время, тем вероятность меньше. Ну это на пальцах, чтобы было понятно, что пример более-менее реален, а не из одного места.

Так вот индикатор показывает этот уровень. Показывает - это значит визуализация, которую могу видеть глазами на чарте. Параметрами вероятностной функции управляю графическими объектами и с клавиатуры. Выходит, что помимо того, что от таймера индикатор живет (вероятностная функция, как сказал выше, от времени сильно зависит (минутные бары - слишком грубо)) , есть еще зависимость от EventChart. Получается такой исследовательский инструментарий, где я по виду кривой и своим представлениям текущего рынка могу мышкой и клавиатурой регулировать на ходу значения индикатора, как мне видится наиболее правильным.

Советник же должен этот отрегулированный с чарта индикатор воспринимать именно таким, какой он есть на чарте. Знаю отлично, что можно писать значения на RAM-диск в виде файла, использовать DLL, чтобы достучаться до указателя на соответствующий буфер. Но это все костыль, как сами понимаете. Не ясно, почему нельзя по-нормальному получить программно то, что я уже итак вижу на чарте.

И у меня довольно много таких вот индикаторных исследовательских инструментов, которые полностью на ООП и событийной модели

 
pako:

показывает данные из буфера 0

что записани то и показывает 

Просьба, измените индикатор и советник так, чтобы они не принтовали в журнал. А советник показывал значение буфера индикатора, куда наведена мышь. Пример такого советника я привел.

Вы исходники не показываете, поэтому должны понять некоторый скептицизм к ex4, где можно различными способами создать видимость, что все так, как хочется показать.

Если откажете, тогда останется только поблагодарить за потраченное на меня время, но впустую. 

 
comp:

У меня есть вероятностная функция, которая показывает уровень наиболее возможного обратного отскока цены. Такой подход подсмотрел в HFT, что когда цена резко скакнула на 10 пунктов вверх, то высока вероятность на протяжении ближайшего времени, что она отскочит обратно. Чем дальше время, тем вероятность меньше. Ну это на пальцах, чтобы было понятно, что пример более-менее реален, а не из одного места.

Так вот индикатор показывает этот уровень. Показывает - это значит визуализация, которую могу видеть глазами на чарте. Параметрами вероятностной функции управляю графическими объектами и с клавиатуры. Выходит, что помимо того, что от таймера индикатор живет (вероятностная функция, как сказал выше, от времени сильно зависит (минутные бары - слишком грубо)) , есть еще зависимость от EventChart. Получается такой исследовательский инструментарий, где я по виду кривой и своим представлениям текущего рынка могу мышкой и клавиатурой регулировать на ходу значения индикатора, как мне видится наиболее правильным.

Советник же должен этот отрегулированный с чарта индикатор воспринимать именно таким, какой он есть на чарте. Знаю отлично, что можно писать значения на RAM-диск в виде файла, использовать DLL, чтобы достучаться до указателя на соответствующий буфер. Но это все костыль, как сами понимаете. Не ясно, почему нельзя по-нормальному получить программно то, что я уже итак вижу на чарте.

И у меня довольно много таких вот индикаторных исследовательских инструментов, которые полностью на ООП и событийной модели. 

Перенесите расчетную часть в советника.
Пусть он работает по таймеру и реагирует на события.

А индикатор пусть отрисовывает готовые кривые с подобранными параметрами. Чтоб быстрее реагировал, пусть делает это не по тикам, а тоже по событиям графика.
Параметры передать проще, потому что их не много (это не буфер со значениями). Например, через Гл. переменные или через те же пользовательские события.

Тут на форуме был пример, как гонять большие массивы данных между индикатором и советником, получалось быстро. Но в этом нет необходимости, если речь о нескольких параметрах.

Я именно об этом и хотел сказать - регулировать должен советник, индикатор должен рисовать.

 
Andrey Khatimlianskii:

Перенесите расчетную часть в советника.
Пусть он работает по таймеру и реагирует на события.

А индикатор пусть отрисовывает готовые кривые с подобранными параметрами. Чтоб быстрее реагировал, пусть делает это не по тикам, а тоже по событиям графика.
Параметры передать проще, потому что их не много (это не буфер со значениями). Например, через Гл. переменные или через те же пользовательские события.

Тут на форуме был пример, как гонять большие массивы данных между индикатором и советником, получалось быстро. Но в этом нет необходимости, если речь о нескольких параметрах.

Я именно об этом и хотел сказать - регулировать должен советник, индикатор должен рисовать.

Безусловно, я знаю, как обойти и создать N-цатый костыль, который будет работать. И об этом говорил. Обратите внимание на

По какой-то причине до сих пор нельзя по-человечески сделать считывание данных индикатора с чарта!

Этого сделать просто нельзя (и нет там никаких переносов больших объемов данных, от слова совсем. GetPtr это доказал)! И видеть в этом "заботу о пользователях", чтобы они не "забивали микроскопом гвозди" у меня не получается. Архитектурно как раз Вы предлагаете кривую конструкцию по своей логике.

Потому что на каждый вариант придется изощряться.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Чтение буферов индикатора, установленного на чарт

comp, 2016.03.14 09:19

Задачка такая вышла. Есть два таких живчика-индикатора. Мне нужно было определить момент, когда средняя разность значений между ними достигает определенного порога (вот здесь нужно уметь делать сабж в том же советнике). И в этот момент скинуть их значения в файл, чтобы затем проанализировать. Ну или если не скидывать, то хотя бы послать сигнал индикатором, чтобы они замерли в этом состоянии. 
 
comp:

Вы бы попробовали обратиться в Сервисдеск. Подробно им все изложить, показать. Может чего подскажут. Но, не факт, что быстро.

Да, если ответят, опубликуйте здесь ответ, пожалуйста. 

 
comp:

Безусловно, я знаю, как обойти и создать N-цатый костыль, который будет работать. И об этом говорил.

Не обойти, а подойти с нужной стороны.
Я не говорил, что разработчики заботятся о нас, не давая получать эти данные. Просто если пользоваться инструментами по назначению, в этом не будет необходимости.
Вы же не пробуете закипятить воду, засовывая пакет с водой в тостер?

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

ИМХО. 

 
Andrey Khatimlianskii:

Вы же не пробуете закипятить воду, засовывая пакет с водой в тостер?

Ваше предложение мне видится именно таким - абсурдным.

Скорее всего, Вы не сталкивались с такими "странными" задачами, поэтому и такое у вас ИМХО.

Событийная модель именно в индикаторе, который рисует - это очень удобно. Более того, я задаю десяток буферов, но рисую только один/два. Остальные - вспомогательная инфа на каждом баре, которую видно по CTRL+D. Это, действительно, помогает понять многое, когда исследуешь.

Но, судя по высказываниям в этой ветке, этого почти никто не понимает. Даже ООП в индикаторах вызывает вопрос "Зачем?". Тут надо пробовать, чтобы понять.

У меня есть ООП-индикатор канала, который вычисляет сразу эквити (на каждом баре и другие кастомные критерии), если по нему торговать. При этом меняя параметры находу, вижу (сразу на чарте) как меняются и сделки. Никакого тестера не нужно и все интерактивно. Но что еще удобнее, чтобы сделать другую логику построения канала, достаточно использовать наследование и прописать несколько строк, отвечающие только за алгоритм канала. Все остальное будет делаться автоматически за счет ООП.

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

 
Alexey Kozitsyn:

Вы бы попробовали обратиться в Сервисдеск. Подробно им все изложить, показать. Может чего подскажут. Но, не факт, что быстро.

Да, если ответят, опубликуйте здесь ответ, пожалуйста.

Заявка #1428577.

 
comp:
Невозможно написание советника, который бы получал значения буферов запущенных на чарте индикаторов с недефолтными входными параметрами. Поскольку iCustom реализован так, что требует прописывание своего вызова в ИСХОДНИКЕ для каждого индикатора.
Возможно. Индикаторы кодите вменяемо.
 
comp:

Агрессия обратнопропорциональна аргументации! О какой ссылке идет речь - не понял.

Были даны коды индикатора и советника. Показано, что через iCustom нельзя получить буферы в некоторых случаях. Так что заголовок не просто верен, он еще и доказан.

С iCustom-ограничениями другого рода - аналогично. Какой смысл в ваших "можно" и "не вижу проблем", если ничего более не говорится? Не встревайте тогда в ветке, раз никакого конструктива внести не в состоянии.

Разве что только ссылку на букварь тебе теперь, что бы  читать научился.
Причина обращения: