Ошибки, баги, вопросы - страница 1851
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за ответ.
В общем результаты,как я и показывал в своих постах.
К тому же вас небольшой чит передо мной - SSD. я вооще тестил на обычном.
И все же результаты между МТ4 и МТ5 отличаются почти в 200 раз (из за - обязательный контроль полной синхронизации с серверными данными ?? и пинга?).
Про 0.6 мс у МТ4 я еще разберусь. Там по всей видимости данные уже предподготовлены и поэтому эта цифра не показывает реальных расходов.
У МТ4 совсем другая идеология и на самом деле фоном терминал копирует огромный объем данных для каждого скрипта/эксперта на системном уровне вне MQL4 кода. Тем самым замеры из MQL4 чаще всего не показывают реальных расходов ресурсов на получение данных. Расходы конечно есть, но они на другом уровне - система берет их на себя.
Понятно, что механизм МТ4 (строить копии рыночных данных для каждого робота) нельзя применять, когда у тебя задача масштабируется на неограниченные потоки данных (глубокая история, десятки тысяч инструментов). Поэтому пришлось кардинально изменить и улучшить MQL5, избавившись от прямых доступов Open/High/Low/Close и перейдя на CopyXXX функции. С учетом объемов данных МТ5, строить копию EURUSD M1 на 6 миллионов баров для эксперта слишком накладно.
MT5/MQL5 везде использует стратегию загрузки данных по требованию без предварительных созданий копий, что означает бОльшую возможность замерить реальные расходы из MQL5 кода.
Поднять базу в память, проверить синхронизацию и подготовить кеши сложного объекта в МТ5 за 113 миллисекунд - это приемлемо.
Например,т.к. в МТ нет скринера рынка, то я накропал небольшой скрипт,который добавляет символы в обзор рынка,т.к. при этом цены доступны только через CopyClose, ни через SymbolInfoDouble,ни через MqlTick они не доступны,пока символ не добавлен в обзор, то соответственно запустив подобный скрипт после запуска терминала, он выполняется "бесконечно" долго,если запустить на очень большом колве. Это только как пример.
Инструменты не обязательно должны быть добавлены в обзор рынка, чтобы по ним получить историю. Любое обращение к данным символа вызывает фоновую синхронизацию данных.
Сейчас есть проблема с тем, что мы используем излишний уровень кеширования с подъемом всей базы данных чарта на всю глубину, даже если запросили последние данные. В результате это дает большой перерасход памяти для скринеров, которые проверяют сотни графиков.
Уже поставлена задача изменить эту стратегию и поднимать данные, не глубже 500 баров от самой далекой даты запроса. Это позволит безболезненно писать скринеры рынка.
Как правильно?
Сами спросили, сами ответили:) Ну да, так и есть.
Сами спросили, сами ответили:) Ну да, так и есть.
Сокращенного вызова шаблонного оператора так и не увидел.
Сто лет не работал со структурами. Если Вам нужно инициировать элемент массива структур целиком, то это будет операция со строкой. А целочисленный элемент этой преобразованной строки Вы инициировали правильно, о чем и сообщил компилятор. Если хотите инициировать, сравнивать, либо еще как обрабатывать массивы структур, поинтересуйтесь способом их представления/хранения в MQL. Ничего сложного и сильно ускоряет работу.
Мне нужно знать, какая синтаксическая запись является сокращенным вариантом этого
Struct[0]
To whom how
Struct[0]
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2017.04.12 14:27
Вот эти два вызова являются разными
Для каждого должна существовать соответствующая сокращенная запись. Какая?
Мне нужно знать, какая синтаксическая запись является сокращенным вариантом этого
Никакая запись не может обеспечить того, что Вы хотите. Принципиально. Семантически.