Ошибки, баги, вопросы - страница 3599
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
После сегодняшнего множественного апдейта иногда вот такая ошибка проскакивала, сфоткал её:
Сейчас столкнулся с такой проблемой - МТ4 'не видит' некоторые соседние бары в Тестере.
Именно некоторые, т.к. в других ситуациях пропуски баров проблемой не является.
В самом начале после start() вывожу строки:
Bar[1] - Время 23:49:
Bar[0] следующий за Bar[1] - Время 10:30:
Но в лог-файле Тестера они как соседние бары отсутствуют:
Т.е. отсутствует случай когда Бар 10:30 следует за Баром 23:49 (что в результате приводит к проблемам в работе).
С чем это может быть связано? (похоже на баг)
Правильно ли я понимаю, что спецификатор delete нет смысла использовать, если может быть использована ссылка/указатель на базовый класс? Или в таких случаях необходимо закрытое наследование? Как принято поступать?
Или в таких случаях необходимо закрытое наследование?
При закрытом наследовании тоже геморой - придется для других публичных методов что-то такое городить:
В общем, не до конца понимаю логику использования delete в этом контексте.
Умные дядьки предлагают для "чистого кода" наследоваться, вместо того, чтобы править существующий оттестированный код. Ага, легко сказать.
Хотя, вероятно, я просто изначально наплужил с архитектурой.При активной загрузке исторических данных, когда в таймере вызывается CopyRates (), крайне нестабильно ведёт себя iBarShift и даже iBars. Выдаётчасто-1 на тех участках, где данные уже загружены. Решается только вычислением номера бара собственными силами, когда в памяти приходится держать свой массив времени открытия баров.
ИМХО, iBarShift не место в пятерке, как и другим iXXX. От буфферизации таймсерий отказались (которая была в четверке), но продолжаем писать, делая вид, как будто буфферизация есть.
Решается только вычислением номера бара собственными силами, когда в памяти приходится держать свой массив времени открытия баров.
Единственное правильное решение, ИМХО.
ИМХО, iBarShift не место в пятерке, как и другим iXXX. От буфферизации таймсерий отказались (которая была в четверке), но продолжаем писать, делая вид, как будто буфферизация есть.
Единственное правильное решение, ИМХО.
для быстрого и без поддержания активности на других рабочих периодах, можно использовать индикатор шпион
нагрузку он не дает дополнительную, а переключения по графикам гораздо быстрее, и нужные символы сразу как в текущий открытый пишет
От буфферизации таймсерий отказались (которая была в четверке)
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3620: улучшения веб-терминала, поддержка ONNX и ускоренное умножение матриц в MQL5
Renat Fatkhullin, 2023.03.08 16:41
В четверке на самом деле сам терминал для каждого эксперта создает и обновляет фоновую копию/снапшот текущего чарта, чтобы робот потом мог по ней бегать без блокировок.
Преставьте себе, что перед вызовом OnTick происходит CopyRates всей истории в фоновой буфер робота. Конечно, с массой трюков для ускорения. В любом случае, это затратно по памяти и достаточно дорого. Обновление буфера добавляет латенси у реакции на OnTick.
Так как эти фоновые затраты идут вне контекста выполнения робота на MQL4, вам кажется, что скорость внутри MQL4 высока и бесплатна. Но удар по памяти и CPU все равно остается из-за расходов на фоновой буфер.
Причем учтите, то копируется только текущий чарт, что позволяет достаточно быстро работать iOpen/iHigh/iLow/iClose функциям на своем чарте. А вот доступ к другим таймфреймам и символам уже через Copy семантику, что выливается в синхронизированный доступ к базе истории как в пятерке.
Пятерка в этом отношении более честна и экономна:
для быстрого и без поддержания активности на других рабочих периодах, можно использовать индикатор шпион
Точно не знаю, о каком шпионе вы говорите, но для поддержания активности графика достаточно и холостого запроса
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3620: улучшения веб-терминала, поддержка ONNX и ускоренное умножение матриц в MQL5
Renat Fatkhullin, 2023.03.08 19:00
Тогда с каждым тиком буду запрашивать 1 элемент графика. Для того, чтобы терминал продолжал обновлять этот график. Это позволит всегда получать данные без лишних задержек и приключений. Наверное...😄
(речь идет о "чужом" графике)
Если хотите поддерживать активность таймфрейма, то холостой запрос данных это обеспечит.
Точно не знаю, о каком шпионе вы говорите, но для поддержания активности графика достаточно и холостого запроса
в поиске есть,
Терминал работает экономно, сохраняет данные только открытого графика, а индикатор-шпион будет на всех нужных работать
найти через поиск можно