Небольшой вопрос по поводу mql4 . Помогите!

 

Задача такая. Сейчас объясню как делается в самом терминале. 

Допустим я добавил на график индикатор RSI . И хочу в то же окно к RSI на него же добавить индикатор BollingerBands. Как это запрограммировать в робот на языке Mql4 ? 

 
Philippp:

Задача такая. Сейчас объясню как делается в самом терминале. 

Допустим я добавил на график индикатор RSI . И хочу в то же окно к RSI на него же добавить индикатор BollingerBands. Как это запрограммировать в робот на языке Mql4 ? 

Как в тоже окно не знаю, но вы всегда можете получить программно ...

iRSI

 

 выделите в редакторе и нажмите F1 (справку) получите подробное описание, так же и с BollingerBands, а дальше думайте какие из них значения сравнивать.

 
Philippp:

Задача такая. Сейчас объясню как делается в самом терминале. 

Допустим я добавил на график индикатор RSI . И хочу в то же окно к RSI на него же добавить индикатор BollingerBands. Как это запрограммировать в робот на языке Mql4 ? 

Взять и просто запрограммировать. Посмотреть в кодобазе примеры индикаторов, что бы знать как они рассчитываются и запрограммировать. 

Для расчета RSI есть функция iRSI. Для полос Боллинджера от RSI надо расcчитать среднюю от RSI и стандартную девиацию от RSI.  Но можно и проще, есть функция iBandsOnArray - как раз считает полосы Боллиндера по индикаторному буферу

 

Просто возьмите перетащите индикатор BB на окно индикатора RSI  и в окне настроек "Применить к:" выберите Previos Indicator's Data

 

 
Vitalii Ananev:

Просто возьмите перетащите индикатор BB на окно индикатора RSI  и в окне настроек "Применить к:" выберите Previos Indicator's Data

 

Это понятное дело, я спрашивал как это запргграммировать
 
Philippp:
Это понятное дело, я спрашивал как это запргграммировать

Про это выше ответили. 

for (int i=1;i<=limit;i++)
{
  RsiBuffer[i]=iRsi(.....)
  UpBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_UPPER,i);
  DnBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_LOWER,i);
}

Вот код для примера.

 
Vitalii Ananev:

Про это выше ответили. 

Вот код для примера.

Может не заработать в одном цикле, надо на два цикла разделить: 

for (...)
{
  RsiBuffer[i]=iRsi(.....)
}

for (...)
{
  UpBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_UPPER,i);
  DnBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_LOWER,i);
}
 
Dmitry Fedoseev:

Может не заработать в одном цикле, надо на два цикла разделить: 

Может быть. Я не проверял. Написал для примера что бы показать алгоритм.
 
Dmitry Fedoseev:

Может не заработать в одном цикле, надо на два цикла разделить: 

Почему может не заработать?
 
Alexey Viktorov:
Почему может не заработать?

Потому что BandsOnArray должен считаться по каким-то данным.

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

Но я тоже по старой привычке через 2 делаю ) 

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