- Можно ли определить тип переменной или элемента в mql4?
- Возможно ли реализовать паттерн singleton на MQL4.
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Пишу сложный индикатор, который работает с большим количеством данных, и эти данные хранятся в структуре, а структура ещё к тому же реализована в виде массива.
А откуда поступают эти данные?
А откуда поступают эти данные?
Это всё данные цен и времени, в различных расчётах. И да забыл сказать, что пишу на Mql4
А, так это нужно проверять в момент получения, а не в момент использования.
Для этого пишется простая функция:
bool IsClosePriceReceived(ENUM_TIMEFRAMES eTF, int nBarIndex, double &fValue) { fValue = iClose(NULL, eTF, nBarIndex); return GetLastError() == ERR_NO_ERROR; }
Использование:
double fClosePrice = 0.0; if (!IsClosePriceReceived(PERIOD_D1, 2, fClosePrice)) { // Не удалось получить цену закрытия позавчерашнего дня } else { // Все ОК }
Даже если что-то и придумать в плане подобной автоматизации, то встает вопрос: а что нужно делать тогда, когда значение все же равно нулю? Должно же быть выдано какое-то сообщение об ошибке и, по всей видимости, дальнейшее выполнение кода не требуется. А ведь это явно нигде не предусмотрено. Таким образом, во всех местах кода, где используются данные структуры все равно нужно делать ветвление в зависимости от значения. То есть выход один - добавлять нужные проверки. Их можно сделать в виде отдельной функции (возможно, шаблона).
А, так это нужно проверять в момент получения, а не в момент использования.
Если равно нулю - то это указывалось бы в локальной переменной, и другие функции бы это видели
В любом случае для этого нужно писать дополнительный функционал. А это потребует переписывания всего кода, чтобы учесть новшества.
Намного проще сделать так, чтобы программа не производила никакие расчеты до тех пор, пока для них не получены все необходимые данные. Как - показано выше.
Это всё данные цен и времени, в различных расчётах. И да забыл сказать, что пишу на Mql4
Если я правильно понял, это данные не цен (цены не бывают равны 0), а результаты каких-то вычислений с ценами. Значит, на этапе этих вычислений перед тем, как помещать очередной результат в массив, нужно проверять на неравенство 0 и в случае равенства не помещать в массив, а совершать какое-то другое, но одно и то же действие. Это можно прописать как процедуру и вызываться она будет лишь в одном месте программы.
Пишу сложный индикатор, который работает с большим количеством данных, и эти данные хранятся в структуре, а структура ещё к тому же реализована в виде массива.
Сразу возникает несколько вопросов.
1. Массив структуры динамический?
2. Может ошибаюсь, но у вас похоже иногда по коду идет обнуление какого-то разряда структуры?
Не совсем понятно в каких ситуациях у вас может возникнуть пустой разряд массива структуры.
Если я правильно понял, это данные не цен (цены не бывают равны 0)
Бывают, когда данные по ТФ не загружены.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования