Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 195

 
barabashkakvn:

Еще раз просмотрите код индикатора из справки https://www.mql5.com/ru/docs/indicators/ima . Обратите внимание на строчки в OnInit():

 Здесь создается хендл индикатора для периода - "period".

Все нашел ошибку в размере масива, это и была основная моя ошибка изначального кода. Но почему график терминала ведет себя не адекватно (блымает, обновляется, смещается и т.д.). Спасибо.
Файлы:
macd2.mq5  4 kb
 
 Здраствуйте. Какие преимущества между функциями IndicatorCreate() и  iCustom() и какую где лучьше применить. Спасибо 
 

Добрый день.

Пытаюсь получить последние значение фрактала:

Handle[Number]=iFractals(Symbol_,0);

CopyBuffer(Handle[Number],UPPER_LINE,4,100,Upper)

upenv[Number]=Upper[0];


но иногда получаю какое-то мистическое число upenv[Number]=1.797693134862316e+308

 

Если бы это число было 0, тогда проблему можно решить так:

if(upenv[Number]!=Upper[0] && Upper[0]!=0)

upenv[Number]=Upper[0];

 

Где моя ошибка? Что я делаю не так? Как получить последние значение фрактала пока оно не изменится?

 
Vikon:
barabashkakvn:

Еще раз просмотрите код индикатора из справки https://www.mql5.com/ru/docs/indicators/ima . Обратите внимание на строчки в OnInit():

 Здесь создается хендл индикатора для периода - "period".

Все нашел ошибку в размере масива, это и была основная моя ошибка изначального кода. Но почему график терминала ведет себя не адекватно (блымает, обновляется, смещается и т.д.). Спасибо.

Вы на каждом тике (т.е. в функции OnCalculate()) создаете хендл индикатора. Это неправильно. Хендл индикатора следует создавать в OnInit().

 
barabashkakvn:

Все нашел ошибку в размере масива, это и была основная моя ошибка изначального кода. Но почему график терминала ведет себя не адекватно (блымает, обновляется, смещается и т.д.). Спасибо.

Вы на каждом тике (т.е. в функции OnCalculate()) создаете хендл индикатора. Это неправильно. Хендл индикатора следует создавать в OnInit().

А если мне необходимо в индикаторе показания MACD (M1;M5;M15;H1;H4;D1;W1), то на каждый период необходимо создавать хендл?
 
Vikon:
А если мне необходимо в индикаторе показания MACD (M1;M5;M15;H1;H4;D1;W1), то на каждый период необходимо создавать хендл?
Да, сделаите в OnInit столько хэндлов индикаторов сколько надо.
 
paladin800:
Да, сделаите в OnInit столько хэндлов индикаторов сколько надо.
Это не из-за хендла, не могу пока понять, по факту код работает корректно данные выдает сравнимо верные. Но комп взлетает, терминал прыгает, чёрти что.
 
barabashkakvn:

Все нашел ошибку в размере масива, это и была основная моя ошибка изначального кода. Но почему график терминала ведет себя не адекватно (блымает, обновляется, смещается и т.д.). Спасибо.

Вы на каждом тике (т.е. в функции OnCalculate()) создаете хендл индикатора. Это неправильно. Хендл индикатора следует создавать в OnInit().

Скорее всего что на графике скажем М15 используются данные D1, или я ошибаюсь.
 
Здраствуете, может у кого то будет время посмотреть мое извояние, где моя основная ошибка или это ошибка разработчиков.
Файлы:
macd2.mq5  7 kb
 
Vikon:
Скорее всего что на графике скажем М15 используются данные D1, или я ошибаюсь.

Вы на каждом тике (т.е. в функции OnCalculate()) создаете хендл индикатора. Это неправильно. Хендл индикатора следует создавать в OnInit(). На графике M15 можно использовать данные с D1. Правда в этом случае данные могут быть неготовы - читаем "Организация доступа к данным" https://www.mql5.com/ru/docs/series/timeseries_access

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Доступ к таймсериям и индикаторам / Организация доступа к данным - Документация по MQL5