Новая версия платформы MetaTrader 5 build 3620: улучшения веб-терминала, поддержка ONNX и ускоренное умножение матриц в MQL5 - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Возможно, если была визуализация, сначала надо закрыть то окно.
Визуализации не было ни разу.
Баг так и не исправлен.
После оптимизации в одиночном проходе bool input-ы которые =true на бэктесте, меняются на false на форвард тесте.
Т.е. форвард тестирование происходит с неверными bool параметрами.
Слева распечатка параметров и ниже Print(UseMA3); на бэктесте, справа на форвард тесте
Сообщал 17 февраля тут https://www.mql5.com/ru/forum/438066/page27#comment_45073855
Воспроизводимый пример тут https://www.mql5.com/ru/forum/441841
Сообщал 17 февраля тут https://www.mql5.com/ru/forum/438066/page27#comment_45073855
Жаль что вы убрали старую версию обращений в сервисдеск. Теперь вам тут пишешь о багах, а вы не замечаете((
Да, с сетевым взаимодействием соглашусь.
Но фактически закачка данных происходит на момент старта программы, или открытие нового графика, или реконнекта и т.д.
То есть в момент когда никаких решений ещё не принимается, а ожидается получение этих данных чтоб принять потом решение ))
Какой смысл отдавать неполные данные в терминал после таймаута! Если для принятия решения их ещё недостаточно, так как данные не полные и не конечные.
Вот в чём вопрос был. Их же можно накапливать, причём не обязательно в память если вопрос упирается в ограниченные ресурсы пользователя.
И дождавшись полной загрузки с теми же сетевыми таймаутами, затем полностью отдать готовые данные в окружение терминала.
Таким образом исключается получение пользователем, не тех данных которые он ожидал, при обращении к функции.
"Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута"
Но по большому счёту удивление было в другом, то что ввели CopySeries для копирования синхронизированных таймсерий из MqlRates
Несложно сделать вывод, что CopyRates как я понял может возвращать таймсерии, со сдвигом между массивами структуры MqlRates.
Вот по этому поводу и было негодование. Или я не так понял? И не к тому отношу слово синхронизация?
А введённая CopySeries как раз решает проблему отдачи данных между таймаутами?
И данные всегда будут те которые ожидал, на момент обращения функцией?
А по кастомному символу на видео, какая-то фигня происходит.
Или реал тайм данные не корректно считаются в формуле, или ещё что-то...
Формула самая простая
История строит одно, а реал тайм строит другое.
И после нажатия обновить, происходит перестроение.
И ещё. Было бы не плохо в настройках кастомного символа, увидеть параметр задающий частоту обновления.
Так как согласно документации, кастомный символ построенный через формулу, обновляется десять раз в секунду.
т.е. 100 ms, что достаточно многовато, и хотелось бы самому задавать частоту обновления.
CopySeries() был введен потому, что когда вы используете, например:
Может случиться так, что lows[i] не синхронизированы с times[i]. Таким образом, значения по индексу i не относятся к одному и тому же бару.
Это случается не часто, но бывает.
CopySeries() был введен потому, что когда вы используете, например:
Может случиться так, что lows[i] не синхронизированы с times[i]. Таким образом, значения по индексу i не относятся к одному и тому же бару.
Это случается не часто, но бывает.
А у CopyRates такая же проблема? Как вы описали.
Или у CopyRates такой проблемы нет?
О чём и было моё предположение, что CopyRates может вернуть не синхронизированные поля структуры.
Если это не так, то так пусть и напишут, что я ошибаюсь.
Мое предположение основывается на том, что если у CopyRates были-бы синхронизированы поля структуры, зачем тогда вводить CopySeries?
Если только для уменьшения запрашиваемых данных, соответственно ускорения.
Но как я понял проблема сетевых таймаутов в CopySeries так-же не решена.
И при первом запуске, CopySeries будет отдавать данные пачками по мере загрузки, что приводит к возможному использованию не тех данных которые ожидаешь!
А у CopyRates такая же проблема? Как вы описали.
Или у CopyRates такой проблемы нет?
О чём и было моё предположение, что CopyRates может вернуть не синхронизированные поля структуры.
Если это не так, то так пусть и напишут, что я ошибаюсь.
Мое предположение основывается на том, что если CopyRates был-бы синхронизирован, зачем тогда вводить CopySeries.
Если только для уменьшения запрашиваемых данных, соответственно ускорения.
Но как я понял проблема сетевых таймаутов в CopySeries так-же не решена.
Я не знаю о CopyRates(), я никогда не использую его, потому что он очень неэффективен, кому действительно нужны все эти данные?
CopySeries() работает очень быстро.
CopySeries() был введен потому, что когда вы используете, например:
Может случиться так, что lows[i] не синхронизированы с times[i]. Таким образом, значения по индексу i не относятся к одному и тому же бару.
Это случается не часто, но бывает.
Если использовать такой формат:
то такого никогда не случится.
Кстати, именно такого (временного) формата не хватает для CopySeries()
Если использовать такой формат:
то такого никогда не случится.
Кстати, именно такого (временного) формата не хватает для CopySeries()
Именно об этом я спросил
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Бета-версия платформы MetaTrader 5 build 3600: улучшения веб-терминала и ускоренное умножение матриц в MQL5
Alexey Viktorov, 2023.03.03 14:47
Будут-ли добавлены варианты функции CopySeries аналогично функции CopyRates
но ответа нет…
Если набрать название включаемого файла, как попало, то после ALT+G открывается вкладка с этим файлом в том же стиле.
А у CopyRates такая же проблема? Как вы описали.
Или у CopyRates такой проблемы нет?
О чём и было моё предположение, что CopyRates может вернуть не синхронизированные поля структуры.
Если это не так, то так пусть и напишут, что я ошибаюсь.
Мое предположение основывается на том, что если у CopyRates были-бы синхронизированы поля структуры, зачем тогда вводить CopySeries?
Если только для уменьшения запрашиваемых данных, соответственно ускорения.
Но как я понял проблема сетевых таймаутов в CopySeries так-же не решена.
И при первом запуске, CopySeries будет отдавать данные пачками по мере загрузки, что приводит к возможному использованию не тех данных которые ожидаешь!
У CopyRates нет проблем с синхронизацией, а CopySeries - это частный случай CopyRates, когда требуется получить не все данные по бару, а только отдельные поля.
Если требуемые поля бара копировать отдельными вызовами CopyLow, СopyTime и т.д., то между вызовами может открыться новый бар и данные в массивах будут неконсистентны, как описал Alain
CopySeries - полностью самостоятельная функция и не использует для совей работы CopyRates.
Синхронизация обеспечивается блокировкой обновления данных по символу на время работы функции, как во всех остальных CopyXXX
Блокировка обновления означает, что обновления по символу будут применены после снятия блокировки, т.е. не будут потеряны.
Новая функция CopySeries имеет только один варант - запрос по номеру бара.
Как правило, при запросе N баров, данные запрашиваются для последних N баров, именно при таком запросе есть вероятность получить несинхронизованные данные, с которыми нельзя работать.
Проблемы несинхронизованных данных нет при использовании CopyXXX функций с указанием начального времени бара, надеюсь не нужно объяснять почему.
Именно поэтому, реализацию вариантов CopySeries для запроса данных по времени пока отложили, сосредоточившись на более важных задачах