Ошибки, баги, вопросы - страница 2652
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Че бодаетесь? Сделали бы вместе что-нибудь полезное.
Станислав выложил фантастический по полезности скрипт в КБ. С легкостью создает архивы с MQL-работами, куда включаются mq?-файлы и ресурсы.
У меня советник из сотни mqh-файлов. С помощью скрипта теперь могу запросто переносить в исходниках советник, контролировать версии и делиться с другими.
Спасибо. Попробую разобрать и проверить варианты событиями графика.
Загляните в веточку, недавно как раз разбирал вопрос подробно - https://www.mql5.com/ru/forum/327888
Anton Shpilyuk: 2) Циклом-перебором до тех пор пока дата не будет совпадать(минус - скорость работы) это так?
По теме "получить индекс бара по времени copyrates"
Ужас, реально так! Стояла задача в индикаторе получить бары М1 таймфрейма, хотя сам индикатор работает на М5 таймфрейме.
1. пришлось инициализировать нужный таймфрейм в OnCalculate(), чтобы он подгрузился до старта индикатора (после инициализации флаг FirstStartFlag = false;). Помним, что в индикаторах, если не подгружено, выдаст -1 или загрузит не полностью, поэтому проверяем сколько загружено, если не достаточно, идем в начало return(0);
объявляем массив MqlRates rates[]; в начале, где cnt_bars*5; - пересчитываем количество баров М5 в М1
После этого уже в теле нужной функции каждый раз при расчетах обновляем исторические данные по М1:
Далее, в цикле перебора М5 баров делаем вложенный цикл поиска индекса соответствующего М1 бара, time[s] - текущий обрабатываемый бар М5 таймфрейма:
Ну и далее используем этот индекс для нахождения нужных данных М1 баров, в моём случае rates[IndexRates-5].time и rates[IndexRates-k-4].close
Слава богу этот вложенный цикл быстро перебирает бары. даже на истории 90 дней. А так бы хотелось, чтобы можно было искать индекс бара в массиве rates[].time по типу двоичного поиска функцией ArrayBsearch
Краткая суть бага:
Когда есть наследование классов A <= B <= C <= D
и реализованы две overloading функции, например одна c параметра А*, а вторая с B*,
то передача в такую функцию объекта C* или D* в MQL вызывает ошибку компиляции "ambiguous call to overloaded function".
Вопрос: есть ли более вменяемый обход этого идиотского бага, чем представленный выше?
Пошли очередные простыни "Почему MQL != C++"...
Зачем что-то комментировать, если вы ни как не разобрались в сути вопроса?
Зачем что-то комментировать, если вы ни как не разобрались в сути вопроса?
Затем, что я уже давно открыл тему для подобных выяснений (потому что никто из таких как Вы сами никак этого сделать не могли).
И затем, что разница в языках ни к ошибкам, ни к багам не относится!
MQL понемногу деморализует:
Краткая суть бага:
Когда есть наследование классов A <= B <= C <= D
и реализованы две функции, например одна для параметра А*, вторая для B*,
то передача в такую функцию объекта C* или D* в MQL вызывает ошибку компиляции "ambiguous call to overloaded function".
Вопрос: есть ли более вменяемый обход этого идиотского бага, чем представленный выше?
Ну не перекладывается STL один в один. Тут надо с большим оглядом на специфику. Проще всего весь возможный функционал абстрактными методами в базовом классе или интерфейсе прописать, а в наследниках - или реализацию, или =delte. В этом случае передаются в методы указатели или ссылки с типом этого самого базового класса. Правда тут неизбежное зло в виде виртуальной таблицы, но это бог с ним, а вот архитектуру желательно выстроить, что бы не было нигде дорогого ветвления через dynamic_cast.