Скачать MetaTrader 5

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

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

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

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

Artyom Trishkin
Модератор
80272
Artyom Trishkin  
Maxim Kuznetsov:

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

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

Только значения OHLC для уже закрытых свечей откуда он будет брать? Их нужно рассчитать по формуле rsi, но для каждого из рассчитываемых значений OHLC необходимо использовать свою формулу. Иначе он будет иметь индикатор, который рисует лишь на текущих значениях, но после переинициализации будет терять все ранее нарисованные буферы.
Dmitry Fedoseev
44575
Dmitry Fedoseev  
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 можно гистограммами.

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

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

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

Maxim Kuznetsov
10866
Maxim Kuznetsov  
Artyom Trishkin:

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

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

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

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

Maxim Kuznetsov
10866
Maxim Kuznetsov  
Maxim Kuznetsov:

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

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

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

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

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

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

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

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

Artyom Trishkin
Модератор
80272
Artyom Trishkin  
Maxim Kuznetsov:

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

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

Зачем?

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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий