Есть индикатор который был написан на MQL4 в нем используется
https://docs.mql4.com/ru/indicators/iatr
в новом он же https://www.mql5.com/ru/docs/indicators/iatr
только там уже возвращается хендл на iATR
последнее значение из массива iATR MQL5 = результат iATR MQL4 ?
Есть хорошая статья по переходу с MQL4 на MQL5
https://www.mql5.com/ru/articles/81
Добавлю свои пять копеек :) там есть функция
double CopyBufferMQL4(int handle,int index,int shift) { double buf[]; switch(index) { case 0: if(CopyBuffer(handle,0,shift,1,buf)>0) return(buf[0]); break; case 1: if(CopyBuffer(handle,1,shift,1,buf)>0) return(buf[0]); break; case 2: if(CopyBuffer(handle,2,shift,1,buf)>0) return(buf[0]); break; case 3: if(CopyBuffer(handle,3,shift,1,buf)>0) return(buf[0]); break; case 4: if(CopyBuffer(handle,4,shift,1,buf)>0) return(buf[0]); break; default: break; } return(EMPTY_VALUE); }
теперь:
1. Зачем динамический массив куда эффективнее статический
2. Зачем после return идет команда break она не когда не выполнится
3. Зачем вообще нужен switch можно проще сделать
//+------------------------------------------------------------------+ //| Copy CopyBuffer function from MQL4 | //+------------------------------------------------------------------+ double CopyBufferMQL4(int handle, int index, int shift) { //--- Инициализация double buf[1]; //--- Если удалось скопировать то возвращаем значение if (CopyBuffer(handle, index, shift, 1, buf) > 0) return(buf[0]); //--- Иначе пустое значение из индикаторного буфера else return(EMPTY_VALUE); }
Главное можно напороться на проблему второго параметра в функции CopyBuffer
>> номер буфера индикатора
ладно если один индикатор а если несколько,
Вопрос к разработчикам MQL5:
зачем нужен второй параметр в функции CopyBuffer если у нас и так есть handle ?
То есть нужны просто значения без привязки к графическим объектам.
- 2010.05.11
- Sergey Pavlov
- www.mql5.com
И ещё инициализацию лучше индикатора выносить в OnInit
насчет второго параметра в функции CopyBuffer странно но видимо это не одно и тоже
номер буфера индикатора != номер буфера индикатора (индекс буфера)
https://www.mql5.com/ru/docs/customind/setindexbuffer
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть индикатор который был написан на MQL4 в нем используется
https://docs.mql4.com/ru/indicators/iatr
в новом он же https://www.mql5.com/ru/docs/indicators/iatr
только там уже возвращается хендл на iATR
последнее значение из массива iATR MQL5 = результат iATR MQL4 ?