Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Установил MetaTrader 5? Узнай о нем подробно!
Philippp
24
Philippp 2016.02.16 04:00 

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

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

Vladimir Zubov
4285
Vladimir Zubov 2016.02.16 04:49  
Philippp:

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

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

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

iRSI

 

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

Dmitry Fedoseev
42862
Dmitry Fedoseev 2016.02.16 07:48  
Philippp:

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

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

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

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

Vitalii Ananev
8081
Vitalii Ananev 2016.02.16 08:40  

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

 

Philippp
24
Philippp 2016.02.16 09:40  
Vitalii Ananev:

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

 

Это понятное дело, я спрашивал как это запргграммировать
Vitalii Ananev
8081
Vitalii Ananev 2016.02.16 09:51  
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);
}

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

Dmitry Fedoseev
42862
Dmitry Fedoseev 2016.02.16 10:06  
Vitalii Ananev:

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

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

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

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

for (...)
{
  UpBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_UPPER,i);
  DnBBRsi[i] = iBandsOnArray(RsiBuffer,....,MODE_LOWER,i);
}
Vitalii Ananev
8081
Vitalii Ananev 2016.02.16 10:49  
Dmitry Fedoseev:

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

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

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

Почему может не заработать?
Andrey Khatimlianskii
56117
Andrey Khatimlianskii 2016.02.16 14:39  
Alexey Viktorov:
Почему может не заработать?

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

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

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

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