Как объеденить (привести к одному виду) показания индикаторов? - страница 2

 
Dmitry Fedoseev:

Что интересно, этот вопрос этом на форуме уже раз 20 задавали, и постоянно все советуют ну полную хрень, а вторая половина вообще не понимает о чем вопрос, но тоже что-то советует.

Пишу 20-ый раз ответ на этот вопрос: надо от каждого индикатора считать WPR с периодом 200-300 баров (примерное количество баров видимых в окне).

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

Напрасно вы про WPR написали, сейчас еще 40 раз начнут спрашивать куда его засунуть вставить. ))

Я тоже не пойму причем тут WPR?

 
Sergey Chalyshev:

...

Я тоже не пойму причем тут WPR?

Это я уже понял.

 
Dmitry Fedoseev:

Это я уже понял.

Кажись я тоже понял!

Вы пытаетесь сделать из абсолютной величины относительную, т.е посчитать на сколько отклонилась машка от своего среднего значения 200-300 баров назад. И относительную величину сделать еще раз относительной своей истории 200-300 баров в прошлом.

Что будет показывать их взаимное расположение?

 
Sergey Chalyshev:

Кажись я тоже понял!

Вы пытаетесь сделать из абсолютной величины относительную, т.е посчитать на сколько отклонилась машка от своего среднего значения 200-300 баров назад. И относительную величину сделать еще раз относительной своей истории 200-300 баров в прошлом.

Что будет показывать их взаимное расположение?

Обратите внимание что происходит с индикатором (с любым) в подоконе при прокрутке. Он всегда занимает всю высоту окна. 

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

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

Считаем от обоих индикаторов WPR, то есть как бы вписываем их оба в подокно. 

 
Dmitry Fedoseev:

Обратите внимание что происходит с индикатором (с любым) в подоконе при прокрутке. Он всегда занимает всю высоту окна. 

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

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

Считаем от обоих индикаторов WPR, то есть как бы вписываем их оба в подокно. 

Можно взять любую высоту окна например от 0 до 1 (допустим у нас там уже есть индикатор в пределах от 0 до 1).

Вписываем в эти рамки еще MA и MACD.

Вы не ответили на вопрос:

Что будет показывать их взаимное расположение?

И что будут показывать сами индюки?

p.s. и причем тут WPR ? 
 
Sergey Chalyshev:

Можно взять любую высоту окна например от 0 до 1 (допустим у нас там уже есть индикатор в пределах от 0 до 1).

Вписываем в эти рамки еще MA и MACD.

Вы не ответили на вопрос:

И что будут показывать сами индюки?

p.s. и причем тут WPR ? 

Хоть от 0 до 1, хоть от 0 до 100%. Можно и в любой другой диапазон загнать хоть от постоянной Планка, до Пи в квадрате, главное, что бы был одинаковый для обоих индикаторов.

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

WPR при том, что у автора темы стоит задача смоделировать поведение двух индикаторов в подокне. Может вы не знаете что такое WPR?

 
Сергей Таболин:

В общем получилось так:

Где-то есть ошибочка....

 

Нашёл. Всё ОК )))

   if(new_bars > 0 && copyBuffers())
   {
      // строим относительный канал
      double   relative_channel_max, price_chanal_max, relative_channel_min, price_chanal_min, price_chanal_zero;
      double   relative_width, price_width, relative_point;
      double   relative_buffer_MA[2];
      
      relative_channel_max   = NormalizeDouble(buffer_INDUK[ArrayMaximum(buffer_INDUK)],Digits());
      relative_channel_min   = NormalizeDouble(buffer_INDUK[ArrayMinimum(buffer_INDUK)],Digits());
      price_chanal_max       = NormalizeDouble(buffer_MA[ArrayMaximum(buffer_MA)],Digits());
      price_chanal_min       = NormalizeDouble(buffer_MA[ArrayMinimum(buffer_MA)],Digits());
      relative_width         = NormalizeDouble((relative_channel_min < 0 ? (relative_channel_max - relative_channel_min) : relative_channel_max) * MathPow(10.0,(double)Digits()),Digits());
      price_width            = NormalizeDouble((price_chanal_max - price_chanal_min) * MathPow(10.0,(double)Digits()),Digits());
      relative_point         = ((price_chanal_max - price_chanal_min) / (relative_channel_min < 0 ? (relative_channel_max - relative_channel_min) : relative_channel_max));
      // определяем цену соответствующую нулю канала 
      price_chanal_zero      = NormalizeDouble(price_chanal_max - (relative_point * relative_channel_max),Digits());
      // переводим цену MA к относительному значению
      relative_buffer_MA[0]  = NormalizeDouble((buffer_MA[0] - price_chanal_zero) / relative_point,Digits());
      relative_buffer_MA[1]  = NormalizeDouble((buffer_MA[1] - price_chanal_zero) / relative_point,Digits());
      ......
   }
 
Сергей Таболин:

Господа-товарищи.

Подскажите такую вещь. Добавил на график индикатор MACD. В окно этого индикатора добавил МА.


Из советника мне нужно узнать, например, находится ли МА ниже/выше нулевого уровня MACD. Но МА показывает цену. Как их подружить? Желательно без измениеня исходников.

1) MACD гистограмма от двух MA медленной и быстрой.

2) Допустим Вы хотите добавить третью MA.

- Если период третьей MA равен периоду медленной MA MACD, то она совпадет с 0-м уровнем MACD.

- Если период третьей MA равен периоду быстрой MA MACD, то она будет совпадать со  значением MACD.

3) Ваше решение: В окно существующего MACD добавить еще один MACD, у которого период "медленная" MA равна периоду "медленной" MA первого MACD, а период "быстрой" MA равна третьей МА, которую вы хотели добавить. Задать одинаковые min и max для обоих индикаторов MACD(третья MA взята 144 она же "быстрая" MA во втором MACD ):

MACD+EMA_GBPUSDH4.png

Все значения исчисляются относительно 0-го уровня медленной MA "34". В эксперте потребуется брать значения двух MACD, у которых периоды "медленных" MA равны.

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