Новая версия платформы MetaTrader 5 build 3280: Улучшения и исправления по отзывам трейдеров - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. Пишу уже не первый раз.
При использовании CopyTicks быстро съедается оперативная память. При попытке запросить историю для накопления в файлах .tkc, например, по всем опционам текущей серии только лишь одной underlying акции за один день (в примере это пара сотен тикеров и всего лишь пара сотен тысяч тиков) съедается 3 ГБ памяти, брокер Финам (зарубежная дочка). Пока я копировал пример из прошлого поста об этой ошибке, я забыл выставить новую дату для закачки тиков по новой серии опционов, т.е. качается по 0 тиков, но память всё равно съедается. В скрипте стоит фильтр на сегодняшнюю дату истории и на тикеры " 220509", это внутринедельные опционы, такие бывают только на SPY, см. лог. Пятничных, а тем более месячных тикеров в десятки раз больше, память засоряется моментально. Аналогично всё происходит при вызове copy_ticks из Питона. В примере с опционами SPY я запустил скрипт 2 раза, затем перезагрузил терминал и запустил скрипт ещё раз.
Другой пример, старый, - копирование тиков форекс с сервера mt5-demo, там ситуация ещё относительно терпимая, но память всё равно засоряется.
Билды 3280 (Финам, тики на опционы SPY, имя скрипта и логов оканчивается на *_SPY) или 3285 (mt5-demo, тики на форекс, имя скрипта и логов - *_mt5_demo).
Прошлый пост
https://www.mql5.com/ru/forum/388631/page14#comment_27885366
Также добавьте, пожалуйста, возможность отслеживать тики других инструментов, а не только того, на котором запущен эксперт. Сейчас есть только событие OnTick(), а нужно что-то вроде
Я знаю, что можно следить за стаканами с OnBookEvent, но по нужным мне инструментам (опционы) брокер просто не даёт такой фид - стакан пустой и через MQL5, и в терминале, а тики (bid/ask) есть. Открывать кучу графиков и вешать на каждый из них свой эксперт - плохой вариант. Предлагали кустарное решение с iCustom - тоже, считаю, плохой, лучше нативная поддержка. Об этом тоже писал в теме билда 3210.
+1
Также добавьте, пожалуйста, возможность отслеживать тики других инструментов, а не только того, на котором запущен эксперт. Сейчас есть только событие OnTick(), а нужно что-то вроде
Я знаю, что можно следить за стаканами с OnBookEvent, но по нужным мне инструментам (опционы) брокер просто не даёт такой фид - стакан пустой и через MQL5, и в терминале, а тики (bid/ask) есть. Открывать кучу графиков и вешать на каждый из них свой эксперт - плохой вариант. Предлагали кустарное решение с iCustom - тоже, считаю, плохой, лучше нативная поддержка. Об этом тоже писал в теме билда 3210.
OnTimer()
https://www.mql5.com/ru/docs/runtime/testing
Функция OnTimer() в тестере #
Мультивалютное тестирование #
адаптируйте и всё получится.
Согласен. ++
Столкнулся с неудобством, когда в мультивалютном эксперте потребовалось поймать первый тик нового бара. Когда ловится первый тик нового бара на текущим символе, на некоторых других новый бар ещё не открылся. Приходится проверять, есть ли новый бар для каждого символа. В советнике, который выложил на мониторинг, я конечно решил этот вопрос другим путём. Но при расчёте, например, корреляции, такие тики где разные последние бары приходится просто игнорировать, так как происходит смещение последовательности баров.
Полностью понятны сообщения компилятора, но все же есть ощущение неодинакового применения некоторых шаблонных конструкций.
В случае, когда функция возвращает структуру - функция вовзвращает ссылку, вот так выглядит псевдо код вызова f(g()) для MqlTick
В случае g<int> нет неявного объекта(памяти), только значение, а для ссылки нужна память
Здесь требуется доработка MQL, варианты:
в этом случае будет не всё так однозначно с перегрузками
в этом случае, функции ниже будут идентичными - компилятор будет ругаться
использовать % будет разумно только в шаблонах
В случае, когда функция возвращает структуру - функция вовзвращает ссылку, вот так выглядит псевдо код вызова f(g()) для MqlTick
В случае g<int> нет неявного объекта(памяти), только значение, а для ссылки нужна память
Здесь требуется доработка MQL, варианты:
в этом случае будет не всё так однозначно с перегрузками
в этом случае, функции ниже будут идентичными - компилятор будет ругаться
использовать % будет разумно только в шаблонах
Я слабо компетентен в данном вопросе. Второй вариант видится лучше первого.
В случае, когда функция возвращает структуру - функция вовзвращает ссылку, вот так выглядит псевдо код вызова f(g()) для MqlTick
В случае g<int> нет неявного объекта(памяти), только значение, а для ссылки нужна память
Здесь требуется доработка MQL, варианты:
в этом случае будет не всё так однозначно с перегрузками
в этом случае, функции ниже будут идентичными - компилятор будет ругаться
использовать % будет разумно только в шаблонах
Разрешите передавать значение по константной ссылке, как в C++.
И когда функция возвращает структуру, она должна возвращать структуру, а не ссылку. С вызовом конструктора копирования, конечно.
Лучше разрешите возвращать ссылку явно. Пусть даже её нельзя сохранять в переменную, это сильно увеличит возможности языка.
что Вы вкладываете в понятие "должна возвращать структуру, а не ссылку", возвращать через регистры CPU что ли?
что Вы вкладываете в понятие "должна возвращать структуру, а не ссылку", возвращать через регистры CPU что ли?
Я ничего не говорил о том как это передаётся внутри.
В приведённом выше коде:
ошибка должна быть в обоих случаях, так как для программиста MQL они равны.
И я против использования '%'.