Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1586
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В какой момент вы пытаетесь сделать снимок? Произвольно, в момент открытия нового бара, по сигналу индикатора или как-то еще?
Покажите свой кусок кода...
Все методы, которые вы упомянули, действительны. Все зависит от того, насколько сильно вы хотите это сделать. В этом нет никакой тайны.
Быстрый пример, основанный на открытии нового бара:
Все методы, которые вы упомянули, действительны. Все зависит от того, насколько сильно вы хотите это сделать. В этом нет никакой тайны.
Быстрый пример, основанный на открытии нового бара:
Я был очень невнимателен. Автор вопроса совсем другой человек.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Nauris Zukas, 2025.08.13 14:15
Надежно ли работает функция ChartScreenShot() в визуальном режиме MetaTrader 5 Strategy Tester? В документации нет никаких ограничений, но я получаю пустые изображения. Кто-нибудь сталкивался с этим или нашел решение?
Это может показаться очевидным, но я думаю, что об этом стоит упомянуть. Вы запускаете тест в визуальном режиме? Без визуального режима нет рендеринга графиков, что объясняет пустые изображения.
Все перечисленные вами методы действенны. Все зависит от того, насколько сильно вы хотите это сделать. В этом нет никакой тайны.
Быстрый пример, основанный на открытии нового бара:
Спасибо за код и изображение, но ваш скриншот (bar_2025.08.15_11-00-00.png) сделан в реальной торговле, а не в визуальном бэктесте, как я и спрашивал: "Надежно ли работает функция ChartScreenShot() в визуальном режиме MetaTrader 5 Strategy Tester?". Я протестировал ваш код с включенным визуальным режимом, и он по-прежнему выдает пустые изображения в бэктесте. В использовании OnTimer() и ChartRedraw() нет ничего нового - я уже пробовал это делать. Ваш расплывчатый совет о "задержках, повторных попытках или запуске по таймеру" не решает проблему. Если у вас есть рабочий пример кода для режима визуального бэктестинга или если вы способны его предоставить, покажите его.
Спасибо за код и изображение, но ваш скриншот (bar_2025.08.15_11-00-00.png) сделан в реальной торговле, а не в визуальном бэктесте, как я и спрашивал: "Надежно ли работает функция ChartScreenShot() в визуальном режиме MetaTrader 5 Strategy Tester?". Я протестировал ваш код с включенным визуальным режимом, и он по-прежнему выдает пустые изображения в бэктесте. В использовании OnTimer() и ChartRedraw() нет ничего нового - я уже пробовал это делать. Ваш расплывчатый совет о "задержках, повторных попытках или запуске по таймеру" не решает проблему. Если у вас есть рабочий пример кода для режима визуального бэктестинга или если вы способны его предоставить, покажите его.
Во-первых, прошу прощения, если мои предыдущие ответы показались вам неясными или бесполезными. Я должен пояснить, что у меня нет личной потребности в ChartScreenShot() в тестере стратегий MT5, и я никогда не использовал его в своей работе. Все, что я здесь написал, было создано с нуля с единственной целью - помочь вам и другим найти возможные решения.
После глубокого изучения истории форума я считаю необходимым быть полностью прозрачным. Насколько я могу судить, ChartScreenShot() никогда не работал надежно в тестере стратегий MT5, даже в визуальном режиме. Нет ни одного подтвержденного случая, когда она работала бы стабильно. Напротив, существуют многолетние отчеты, описывающие пустые или нуль-байтовые файлы.
Причина кроется в том, как устроен MT5. В MT4 тестер работает в одном потоке и отображает график в том же контексте, что и окно терминала, поэтому, когда вы делаете скриншот, в памяти находится реальное изображение графика, которое нужно захватить. В MT5 тестер многопоточный и распределен по процессам агента, а рендеринг графика происходит асинхронно. В визуальном режиме график, который вы видите, отрисовывается интерфейсом терминала, но код советника в тестере выполняется в агентском процессе, который не имеет прямого доступа к этому отрисованному изображению. Функция возвращает "true", потому что считает, что она преуспела, но в этом контексте нет завершенного графика, который можно было бы перехватить.
Из-за такого разделения проблему нельзя решить с помощью трюков с таймингом, повторных попыток или исправлений кода. Это ограничение является прямым результатом архитектуры MT5 и того, как она работает с бэктестингом.
Надеюсь, это объясняет, почему вы и другие видят пустые изображения и почему нет настоящих рабочих примеров для визуального бэктестинга. Это не вопрос мастерства или креативности; эта функция просто не поддерживается в среде тестера MT5.
Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий
Вопросы от новичков MQL5 MT5 MetaTrader 5
Мигель Анхель Вико Альба, 2025.08.14 16:05
Да, по сравнению с MT4 это может показаться немного странным, но на это есть причина, рендеринг асинхронный.
Спасибо за код и изображение, но ваш скриншот (bar_2025.08.15_11-00-00.png) сделан в реальной торговле, а не в визуальном бэктесте, как я и спрашивал: "Надежно ли работает функция ChartScreenShot() в визуальном режиме MetaTrader 5 Strategy Tester?". Я протестировал ваш код с включенным визуальным режимом, и он по-прежнему выдает пустые изображения в бэктесте. В использовании OnTimer() и ChartRedraw() нет ничего нового - я уже пробовал это делать. Ваш расплывчатый совет о "задержках, повторных попытках или запуске по таймеру" не решает проблему. Если у вас есть рабочий пример кода для режима визуального бэктестинга или если вы способны его предоставить, покажите его.
А в чём, собственно смысл делать скриншоты в тестере, если их можно сделать после?
А в чём, собственно смысл делать скриншоты в тестере, если их можно сделать после?
В своё время я тоже сходил с ума… Правда это было на МТ4. После прогона тестера смотрю открытые ордера, показания индикаторов и удивляюсь… «Как здесь мог открыться ордер?» Сидеть таращиться в монитор утомительно. Вот и начал делать снимки в момент открытия ордера, чтобы увидеть показания индикаторов… Но теперь язык стал гораздо удобней. А с появлением отладчика вообще все проблемы исчезли.
В своё время я тоже сходил с ума… Правда это было на МТ4. После прогона тестера смотрю открытые ордера, показания индикаторов и удивляюсь… «Как здесь мог открыться ордер?» Сидеть таращиться в монитор утомительно. Вот и начал делать снимки в момент открытия ордера, чтобы увидеть показания индикаторов… Но теперь язык стал гораздо удобней. А с появлением отладчика вообще все проблемы исчезли.
Я смог придумать один вариант - человек делает нейронку с распознаванием картинок, тогда да - нужны скрины в процессе, без истории с правой части и с масштабированием на момент скриншота.
Если тормаза из-за асинхронной обработки, то может надо приостановить вычисления логики, что бы отрисовка подоспела? Допустим, сделать ресурсоёмкие вычисления в цикле, и в нём же сделать скриншот?
После выхода метатестера около 5120 GUI ограничивает максимальное количество созданных агентов половиной потоков процессора, как на приложенной картинке.
Почему так? Я даже не подключаюсь к облаку?
Всем доброго вечера и хорошего настроения!
Пытаюсь разобраться с одним вопросом. Допустим есть две сетки ордеров, установленных в обоих направлениях от текущей цены. При движении текущей цены вверх могут активироваться (это идеальный вариант) все отложенные ордера. А могут и не активироваться, но это пока не столь важно. Если активировались все отложенные ордера вверх, то как определить цены первой и последней позиции верхней сетки (на картинке пометил красными стрелками). Это самый важный момент в моём вопросе!!! При движении цены вниз - всё тоже самое.
Подготовил небольшой скрипт, чтобы для начала хотя бы от чего-то оттолкнуться. Да, и ещё один не мало важный момент - количество открытых позиций вверх и вниз может меняться в ходе торгов. Какие будут мысли по этому вопросу?
С уважением, Владимир.