как отобразить индикатор в виде свечей или баров

 
Как можно изменить стандартный индикатор RSI чтоб он отображался в виде свечи с своим минимумом максимумом открытием закрытием на каждой свече торгового инструмента
 
revka.sb:
Как можно изменить стандартный индикатор RSI чтоб он отображался в виде свечи с своим минимумом максимумом открытием закрытием на каждой свече торгового инструмента

Это технический вопрос или задание на фриланс ?

если тех.вопрос - то для ЧЁРНЫХ свечей заводите заводите буферы под гистограммы, 1) 2 шт для тонкой линии high,low (на размер свечи) 2) 2шт для толстой линии open,close (на тело свечи) и для БЕЛЫХ свечей аналогично. Далее просто расставляете значения в эти буферы.

 
Maxim Kuznetsov:

Это технический вопрос или задание на фриланс ?

если тех.вопрос - то для ЧЁРНЫХ свечей заводите заводите буферы под гистограммы, 1) 2 шт для тонкой линии high,low (на размер свечи) 2) 2шт для толстой линии open,close (на тело свечи) и для БЕЛЫХ свечей аналогично. Далее просто расставляете значения в эти буферы.

Только значения OHLC для уже закрытых свечей откуда он будет брать? Их нужно рассчитать по формуле rsi, но для каждого из рассчитываемых значений OHLC необходимо использовать свою формулу. Иначе он будет иметь индикатор, который рисует лишь на текущих значениях, но после переинициализации будет терять все ранее нарисованные буферы.
 
for(i=pos; i<rates_total && !IsStopped(); i++)
     {
      diff=close[i]-close[i-1];
      ExtPosBuffer[i]=(ExtPosBuffer[i-1]*(InpRSIPeriod-1)+(diff>0.0?diff:0.0))/InpRSIPeriod;
      ExtNegBuffer[i]=(ExtNegBuffer[i-1]*(InpRSIPeriod-1)+(diff<0.0?-diff:0.0))/InpRSIPeriod;
      if(ExtNegBuffer[i]!=0.0)
         ExtRSIBuffer[i]=100.0-100.0/(1+ExtPosBuffer[i]/ExtNegBuffer[i]);
      else
        {
         if(ExtPosBuffer[i]!=0.0)
            ExtRSIBuffer[i]=100.0;
         else
            ExtRSIBuffer[i]=50.0;
        }
     }

Выше часть кода RSI из кодабазы.

 Третья сверху строка:

diff=close[i]-close[i-1];

Подменить close[i] четыре раза на open, high, low, close. Будет четыре результата. Для рисования баров есть специальный тип буферов - бары (в МТ5). В МТ4 можно гистограммами.

 
Artyom Trishkin:
Только значения OHLC для уже закрытых свечей откуда он будет брать? Их нужно рассчитать по формуле rsi, но для каждого из рассчитываемых значений OHLC необходимо использовать свою формулу. Иначе он будет иметь индикатор, который рисует лишь на текущих значениях, но после переинициализации будет терять все ранее нарисованные буферы.
из младшего ТФ или тиковых буферов или из соседних "свечей"/показаний оригинала, или разложив OHLC на доли.. если он не знает откуда и как взять данные для своей хотелки - то это прямая дорога во фриланс :-) Вопрос был КАК ? ответ был ТАК ВОТ..
 
Спасибо откликнувшимся.есть теперь чем помучять думалку :)
 
Maxim Kuznetsov:
из младшего ТФ или тиковых буферов или из соседних "свечей"/показаний оригинала, или разложив OHLC на доли.. если он не знает откуда и как взять данные для своей хотелки - то это прямая дорога во фриланс :-) Вопрос был КАК ? ответ был ТАК ВОТ..

Вон, выше Дмитрий уже расписал на что я намекал ;)

Осталось только собрать в кучку всё.

 
Artyom Trishkin:

Вон, выше Дмитрий уже расписал на что я намекал ;)

Осталось только собрать в кучку всё.

это будет именно кучка.. :-)

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

 
Maxim Kuznetsov:

это будет именно кучка.. :-)

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

FIX: в общем случае : если есть некий осциллятор (функция) Osc и хочется построить его свечку для свечи OHLC цены, то Открытие=Osc(O), Закрытие=Osc(C), а далее цикл по пунктам от L до H и поиск/вычислние минимума Osc и максимума Osc на этом промежутке
 

Но ведь Это так просто! Это как поэма, простая поэма.

Итак, сохранить что то в виде свечей! Четыре потока данных. Верх, низ, закрытие.

При всем этом мальчики. Данные нужно взять по максимуму и по минимуму. Ах!

Ну. Ах. Не все что попало. Максимум, вычисляем, выделяем, запоминаем. Точно так же с минимумом. Ах. Ну вот и все. Ах. Как все просто?

Ах. Затем берем четыре потока данных вносим изменения в индикатор. Ах. Как просто. Максимум обозначаем как High. И так далее. Ах.

 
Maxim Kuznetsov:

это будет именно кучка.. :-)

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

Зачем?

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

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