Новая версия платформы MetaTrader 5 build 4040: Улучшения и исправления - страница 30
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Предложение по улучшению функционала.
Для https://www.mql5.com/ru/docs/series/copyticks
Нужно получить несколько тиков от указанной даты, но не вперед, а назад.
На самом деле нужен 1 предыдущий тик, чтобы узнать цены Ask и Bid на нужный момент времени Rollover-a (заметьте, нужен не текущий из SymbolInfoDouble(s, SYMBOL_ASK), т.к. тик придет при открытии торг. сессии, м.б. через несколько минут после Rollover-a).
Если есть решение без CopyTicks - расскажите.
Сейчас если указать
CopyTicks(_Symbol, ticks, COPY_TICKS_ALL, TimeMsec, 10);
То получим 10 тиков в будущее от TimeMsec .
Хорошо бы сделать count с отрицательным значением, для переключения направления копирования тиков, чтобы получить тики до указанной даты:
CopyTicks(_Symbol, ticks, COPY_TICKS_ALL, TimeMsec, -10);
И получить 10 тиков от TimeMsec в прошлое. Нужно просто переключить направление копирования от найденной даты
Сейчас есть вариант делать через дату = 0, т.е. от текущего момента
CopyTicks(_Symbol, ticks, COPY_TICKS_ALL, 0, 10);Можно запросить 10 в цикле поискать нужный момент времени , если не найдется, то 100, потом 1000 и т.д., но это долго.
Задача похожа на CopyTicksRange, но там надо начальную дату ставить, а не количество. Т.е. тоже надо запрашивать с избытком и в цикле искать нужный момент времени.
Альтернативно или дополнительно к этому - создать запрос:Доработка достаточно простая, и позволит получать очень быстро Ask,Bid и др. на любой момент времени.
SymbolInfoDouble(s, SYMBOL_ASK/BID, TimeMsec ); - который вернет цены на нужный момент времени.
На самом деле нужен 1 предыдущий тик, чтобы узнать цены Ask и Bid на нужный момент времени Rollover-a (заметьте, нужен не текущий из SymbolInfoDouble(s, SYMBOL_ASK), т.к. тик придет при открытии торг. сессии, м.б. через несколько минут после Rollover-a).
Если есть решение без CopyTicks - расскажите.
Сохранять значение предыдущего тика в глобальную или static перемнную.
Если нужно несколько значений, то создать соостветствующий массив.
На CopyTicks было много нареканий.
Сохранять значение предыдущего тика в глобальную или static перемнную.
Если нужно несколько значений, то создать соостветствующий массив.
На CopyTicks было много нареканий.
Но хотелось бы быстрый запрос получить, по предложенным выше вариантам.
По ~300-500 тыс сохранений в день (86400 секунд - если тиков по 5 в сек)? Думаю это еще медленнее моего решения (даю код, может кому пригодится):
Но хотелось бы быстрый запрос получить, по предложенным выше вариантам.
Ну да, в неделю еще больше будет, а за месяц/год вообще. )))
На самом деле одна операция присваивания за тик - это вообще ничто даже для ЦП 10-летней давности.
Ну да, в неделю еще больше будет, а за месяц/год вообще. )))
На самом деле одна операция присваивания за тик - это вообще ничто даже для ЦП 1-летней давности.
И это будут не присваивания известных цен, а запросы по др. символу SymbolInfoDouble(s, SYMBOL_ASK), SymbolInfoDouble(s, SYMBOL_BID), по 300 000 в день... - однозначно тормоза
Мы не про одну операцию говорим... Надеюсь разработчики сделают быстрый доступ.
И это будут не присваивания известных цен, а запросы по др. символу SymbolInfoDouble(s, SYMBOL_ASK), SymbolInfoDouble(s, SYMBOL_BID), по 300 000 в день... - однозначно тормоза
Надеяться на разработчиков можно и нужно. Но у них немало работы и свои приоритеты.
Практика показывает что 95% вопросов приходится решать своими силами.
Правильно ли понимаю, что добавление в сигнатуры штатных функций const-модификатора обозначает, что компилятор добавляет исходники штатных функций в исходник пользователя и объединенный результат компилирует, включая все шаги оптимизации? Грубо говоря, раньше штатные функции брались через #import, а сейчас - #include.
нужен 1 предыдущий тик, чтобы узнать цены Ask и Bid на нужный момент времени Rollover-a (заметьте, нужен не текущий из SymbolInfoDouble(s, SYMBOL_ASK), т.к. тик придет при открытии торг. сессии, м.б. через несколько минут после Rollover-a).
По текущему символу - да. По другому символу нет (нужно для перевода свопа из цены символа в валюту аккаунта). Например первый тик пришел на 5 секунде по этому инструменту после начала сессии, по другому уже много натикало с 1-й секунды... Из своих распечаток отловил 20 тиков по одной из комбинаций. Очевидно, что может быть и больше. До миллионов, если по текущему инструменту выходные/празднчные, а по другому нет и там дня 3 тикало... Поэтому через циклы с запросами до миллионов тиков. Или разработчики сделают быстрый доступ по времени.
По текущему символу - да. По другому символу нет (нужно для перевода свопа из цены символа в валюту аккаунта). Например первый тик пришел на 5 секунде по этому инструменту после начала сессии, по другому уже много натикало с 1-й секундв... Из своих распечаток отловил 20 тиков по одной из комбинаций. Очевидно, что может быть и больше. До миллионов, если по текущему инструменту выходные/празднчные, а по другому нет и там дня 3 тикало... Поэтому через циклы с запросами до миллионов тиков.
Не понимаю авторов мультивалютных советников, не использующих мультивалютный OnTick, который обеспечивает совпадение результатов, вне зависимости от выбранного _Symbol.