Нид помощь в прикручивании индикатора в советник по алгоритму - страница 2

 
vfp7:

Добрый день всем

Нид помощь в прикручивании индикатора в советник, с немного специфичными условиями.

Индикатор RSIoma Bollinger Bands ( ***)

Условия срабатывания:

Синяя линия движется вниз от момента "1" с не менее половины расстояния между пунктирными линиями на графике индикатора ( 80% и 50% на этих линиях по умолчанию ),

затем синяя линяя немного пересекает вниз границу уровня 50% с небольшим двойным возвратом и последующим продолжением опускания вниз ( "2", "3", "4" )

Серая линия ( "5" ) при этом с момента пересечения синей линии уровня 50% и до выхода синей линии в точке "4" двигается вниз от уровня +-немного от 80%.

То есть нужно отловить ситуацию как на графике в выделенном диапазоне и в момент точки "4" выполнить некоторые действия в советнике:



Не буду расписывать как конкретно описать сигнал (а то вы сами никогда не научитесь),

дам лишь совет как не терять время на стыковку: добавьте в индикатор стрелочный буфер, добейтесь чтоб стрелки располагались в нужных местах, проверьте это в тестере. После этого стыковка с советником станет в разы легче (вам лишь придётся описать в советнике чтоб срабатывание по условию происходило один раз при появлению условия, а не на каждом тике после того как условие появилось, те будет достаточно поставить флаг новой стрелки, чтоб отличать от уже отработанных). 

 
Urain:

Не буду расписывать как конкретно описать сигнал (а то вы сами никогда не научитесь),

дам лишь совет как не терять время на стыковку: добавьте в индикатор стрелочный буфер, добейтесь чтоб стрелки располагались в нужных местах, проверьте это в тестере. После этого стыковка с советником станет в разы легче (вам лишь придётся описать в советнике чтоб срабатывание по условию происходило один раз при появлению условия, а не на каждом тике после того как условие появилось, те будет достаточно поставить флаг новой стрелки, чтоб отличать от уже отработанных). 

Индикатор будет сторонний, с закрытым кодом и гораздо посложнее RSI.

Я не могу вносить в него изменения, на RSI я провожу лишь обкатку обработки сложных вычислений, мне как раз подошло для отшлифовки кодирования то что он отрисовал на графике - разнонаправленные колебания графиков в диапазоне четырех часов и только при отрисовке на М30.

Самое то что надо.

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

 
barabashkakvn:
Насчёт ограничения по барам - не совсем понял, но может это поможет: Организация доступа к данным

Так как индикатор отрабатывает по М30 то за час будет всего двое данных ( в iCustom параметр shift в барах )

То что происходит на картинке длится четыре часа, то есть я могу получить через вызов iCustom только 8 данных по линии1, и 8 данных по линии2 ( с интервалами по пол часа ).

А для отработки кодирования алгоритма нужно как минимум 14 данных по каждой линии ( чем больше будет данных до разумных пределов - тем точнее отработает алгоритм ), иначе я не смогу отследить движение этих линий ( куда они двигаются вверх или вниз, пересекли ли они границу в 50% и т.п. )

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

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

Не очень хороший вариант, есть ли получше способ ?

 
vfp7:

Индикатор будет сторонний, с закрытым кодом и гораздо посложнее RSI.

Я не могу вносить в него изменения, на RSI я провожу лишь обкатку обработки сложных вычислений, мне как раз подошло для отшлифовки кодирования то что он отрисовал на графике - разнонаправленные колебания графиков в диапазоне четырех часов и только при отрисовке на М30.

Самое то что надо.

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

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

Буфера можно скопировать как в дата массивы так и в калькуляцион массивы (не отображающиеся), это уже по желанию, для начала советую в дата.

Где какой массив в основном индикаторе можно отследить запустив его на чарте и открыв окно "окно данных".

 
vfp7:

Так как индикатор отрабатывает по М30 то за час будет всего двое данных ( в iCustom параметр shift в барах )

То что происходит на картинке длится четыре часа, то есть я могу получить через вызов iCustom только 8 данных по линии1, и 8 данных по линии2 ( с интервалами по пол часа ).

А для отработки кодирования алгоритма нужно как минимум 14 данных по каждой линии ( чем больше будет данных до разумных пределов - тем точнее отработает алгоритм ), иначе я не смогу отследить движение этих линий ( куда они двигаются вверх или вниз, пересекли ли они границу в 50% и т.п. )

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

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

Не очень хороший вариант, есть ли получше способ ?

Обьясните выделенное, ато для меня это выглядит как полный бред. Поясните подребнее что вы хотели сказать этой фразой?
 
Urain:

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

Буфера можно скопировать как в дата массивы так и в калькуляцион массивы (не отображающиеся), это уже по желанию, для начала советую в дата.

Где какой массив в основном индикаторе можно отследить запустив его на чарте и открыв окно "окно данных".

Намордник это и получается костыль который постом выше описал, только в теле советника.

Но как то это очень неправильно, должен быть по нормальнее вариант.

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

 
Urain:
Обьясните выделенное, ато для меня это выглядит как полный бред. Поясните подребнее что вы хотели сказать этой фразой?

iCustom отдает данные от индикатора кратно барам.

А бар будет на М30 равен полчаса.

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

Или я неправильно понимаю как отрабатывает iCustom

iCustom( Symbol(), 30, "RSIOMA Bollinger Bands", 14, 80, 20, 50, 50, 10, 1, 0, 10, 0, 0 ) = текущим данным от индикатора,
iCustom( Symbol(), 30, "RSIOMA Bollinger Bands", 14, 80, 20, 50, 50, 10, 1, 0, 10, 0, 1 ) = данные от индикатора на срезе 30 минут назад
iCustom( Symbol(), 30, "RSIOMA Bollinger Bands", 14, 80, 20, 50, 50, 10, 1, 0, 10, 0, 2 ) = данные от индикатора на срезе 60 минут назад и т.д.
 
vfp7:

iCustom отдает данные от индикатора кратно барам.

А бар будет на М30 равен полчаса.

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

Или я неправильно понимаю как отрабатывает iCustom

На истории правильно, а вот в реалтайме (если расчёт по Close) то данные текущего бара будут меняться на каждом тике.
 
Urain:
На истории правильно, а вот в реалтайме (если расчёт по Close) то данные текущего бара будут меняться на каждом тике.

Значит я все верно понял в работе iCustom и похоже без костыля ничего не получится.