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

 
comp:

Ответ (привожу полностью):

Пипец! На чарте индикатор вы видите, но получить его значения мы вам не дадим - в очередной раз подтвердили свое амплуа.

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

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

Это только кажется, щас тяп-ляп, тут кода подмажем, тут подрежем, все и заработает. Не заработает, увы.

Не надо трогать то, что пашет стабильно. 

 
Andrey Khatimlianskii:

Тогда зачем их сравнивать?

Затем же, зачем сравнивают логически разные MA и RSI, например.
 
Alexey Volchanskiy:

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

Они уже пронумерованы даже в MT4. Смотрите ChartIndicatorName и ChartIndicatorsTotal.

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

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

iCustomChart

Возвращает численное значение указанного пользовательского индикатора на соответствующем графике.

double  iCustomChart( 
   long  chart_id,      // идентификатор графика (аналогичный, как в ChartIndicatorName)
   int   sub_window,    // номер подокна (аналогичный, как в ChartIndicatorName)
   int   index,         // индекс индикатора в списке индикаторов, добавленных к данному подокну графика (аналогичный, как в ChartIndicatorName)
   int   mode,          // источник данных (аналогичный, как в iCustom)
   int   shift          // сдвиг (аналогичный, как в iCustom)
   );

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

sub_window

[in]  Номер подокна графика. 0 означает главное окно графика.

index

[in]  Индекс индикатора с списке индикаторов. Нумерация индикаторов начинается с нуля, то есть самый первый индикатор в списке имеет нулевой индекс. Количество индикаторов в списке можно получить функцией ChartIndicatorsTotal().

mode

[in] Индекс линии индикатора. Может принимать значения от 0 до 7 и соответствовать индексу, указанному при вызове функции SetIndexBuffer().

shift

[in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Возвращаемое значение

Численное значение указанного пользовательского индикатора на соответствующем графике.

 
comp:
Затем же, зачем сравнивают логически разные MA и RSI, например.

МА, построенная по ценам, или МА от RSI?

Если по ценам, то конечно - через советника (именно он логически объединяет эти 2 разных индикатора).
Если по RSI, то в одном индикаторе (в нем уже будет информация и о RSI и о MA).

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

 
Andrey Khatimlianskii:

Или смысл в каком-то универсальном конструкторе, который мог бы брать любые индикаторы, прицепленные к графику, и анализировать?

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

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

Если совсем тупой пример, то возьмем тиковый индикатор. Пусть в буфер он записывает какие-то данные тиков. При этом использовал только OnCalculate.

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

Вам показались данные, что видите на чарте, интересными и захотелось сбросить их в файл. Как это сделать? - Никак!

Видите данные, но считать их не можете. Ну разве что парсить как-то окно CTRL+D через WinAPI. И заметьте, никакой интерактивности. 

 
comp:

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

Если совсем тупой пример, то возьмем тиковый индикатор.

Про интерактивность уговорили, соглашусь.
Но пример опять высосан из пальца (забыли/недосмотрели/вообще не думали).

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

 
Andrey Khatimlianskii:

Но пример опять высосан из пальца (забыли/недосмотрели/вообще не думали).

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

 
comp:

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

вставить можно через iCustom, а вот код индикатора, полученного из маркета, вставить в советник всегда будет облом
 
Alexander Bereznyak:
вставить можно через iCustom
И получить в некоторых случаях, что здесь обстоятельно разбирались, совсем не то, что видите на чарте.
 
comp:
И получить в некоторых случаях, что здесь обстоятельно разбирались, совсем не то, что видите на чарте.

индикатор перерисовывает не только нулевой бар но и историю, индикатор не то что-бы с нулевой ценностью, а даже с отрицательной, потому как обманывает -видел такие и не один

и видел людей одураченных этими индикаторами 

Причина обращения: