Новая версия платформы MetaTrader 5 build 3540: 2FA/TOTP аутентификация и улучшенный Обзор рынка в веб-терминале - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Поясню проблему работы с историей на очень простом примере.
И таких ситуаций несколько, когда идет не дозапись в конец HistorySelect(0, INT_MAX), а вклинивание между предыдущими записями торговой истории. Это порождает серьезные сложности в нивелировании асинхронных особенностей Терминала, тем самым создавая высокую вероятность получения удвоенных позиций и других неприятностей при активной торговле.
Я правильно Вас понял - при запросе истории сделок в диапазоне 10:10-10:55 сейчас возможно получить вот такой результат?
Индекс
0
1
2
3
4
5
6
7
8
Время сделки
10:20
10:25
10:28
10:30
10:35
10:38
10:52
10:45
10:50
Добавлено:
Или такая картина возможна только по истории ордеров?
Или такая картина возможна только по истории ордеров?
Только с ордерами. Казалось бы, что на историю ордеров можно наплевать, ведь она никак не должна участвовать в логике советника. Однако, только через нее возможно понять текущее состояние правильности торгового окружения. Иначе будут задвоения позиций и другие приколы.
Только с ордерами. Казалось бы, что на историю ордеров можно наплевать, ведь она никак не должна участвовать в логике советника. Однако, только через нее возможно понять текущее состояние правильности торгового окружения. Иначе будут задвоения позиций и другие приколы.
Нужна сортировка по времени, в любом случае. Без неё любой цикл по ордерам даст такую кашу, что даже представлять не хочется.
+
Вообще в идеале добавить функцию получения истории сразу с нужной сортировкой , чтобы можно было выбирать время открытия, закрытия, тип ордера, профит, тикет. Это было бы идеальное решение, когда надо получить именно последние .
Я всегда в роботах опираюсь на данные истории сделок и ордеров, если сохранять в памяти, то любой перезапуск ломает логику, а нам этого не надо. Все грузим из истории. Порядок в истории ордеров важен, это сокращает время на поиск нужных данных и их подгрузку.
+
Вообще в идеале добавить функцию получения истории сразу с нужной сортировкой , чтобы можно было выбирать время открытия, закрытия, тип ордера, профит, тикет. Это было бы идеальное решение, когда надо получить именно последние .
Я всегда в роботах опираюсь на данные истории сделок и ордеров, если сохранять в памяти, то любой перезапуск ломает логику, а нам этого не надо. Все грузим из истории. Порядок в истории ордеров важен, это сокращает время на поиск нужных данных и их подгрузку.
Историю сейчас сортируют по тикетам, что правильно. И здесь ничего менять не надо.
А вот ИЗМЕНЕНИЯ истории, которые получает советник ВО ВРЕМЯ работы через HistorySelect(0, INT_MAX) , нужно дозаписывать в конец ТОЛЬКО для советника, пока он работает. Это касается исторического кеша советника, который когда-то специально делали ради серьезного ускорения.
Еще раз, речь идет не про историческую таблицу терминала, а про влияние новых записей на исторический кеш работающего советника.
+
Вообще в идеале добавить функцию получения истории сразу с нужной сортировкой , чтобы можно было выбирать время открытия, закрытия, тип ордера, профит, тикет. Это было бы идеальное решение, когда надо получить именно последние .
Я всегда в роботах опираюсь на данные истории сделок и ордеров, если сохранять в памяти, то любой перезапуск ломает логику, а нам этого не надо. Все грузим из истории. Порядок в истории ордеров важен, это сокращает время на поиск нужных данных и их подгрузку.
По моему, в идеале получить историю в базу данных SQLite… И делай с ней что захочешь и сможешь.
Историю сейчас сортируют по тикетам, что правильно. И здесь ничего менять не надо.
А вот ИЗМЕНЕНИЯ истории, которые получает советник ВО ВРЕМЯ работы через HistorySelect(0, INT_MAX) , нужно дозаписывать в конец ТОЛЬКО для советника, пока он работает. Это касается исторического кеша советника, который когда-то специально делали ради серьезного ускорения.
Еще раз, речь идет не про историческую таблицу терминала, а про влияние новых записей на исторический кеш работающего советника.
Почему для изменений не запрашивать историю не от печки, а с последнего опроса? Типа HistorySelect(lastRequestTime, INT_MAX)?
Почему для изменений не запрашивать историю не от печки, а с последнего опроса? Типа HistorySelect(lastRequestTime, INT_MAX)?
Это проходили. Формирование такого запроса происходит очень долго. Поэтому разработчики придумали исторические кеши MQL-программ, которые мгновенно обновляются.
Была ветка, где шла активная оптимизация этого решения. Очень сильно подняли скорости.
Ренат специально рекомендовал использовать только HistorySelect(0, INT_MAX), чтобы не перестраивать внутренний исторический кеш советника. Происходила дозапись в конец всех новых исторических данных, скорость была великолепной.
Ренат специально рекомендовал использовать только HistorySelect(0, INT_MAX), чтобы не перестраивать внутренний исторический кеш советника. Происходила дозапись в конец всех новых исторических данных, скорость была великолепной.
Благодаря этой скорости получилось обойти все рассинхроны. Один из простых:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Непонятная ситуация при срабатывании отложенных ордеров.
fxsaber, 2018.11.26 13:37
Еще бывает такая ситуация:
Например, нет ни позиций, ни ордеров - PositionsTotal = 0, OrdersTotal = 0.
Выставляете маркет-ордер. При этом PositionsTotal = 0, OrdersTotal = 1.
Маркет-ордер исполнился - OrdersTotal = 0. Но PositionsTotal = 0!
На новых билдах история не дозаписывается в конец, поэтому нахождение подобных ситуаций значительно усложняется не только алгоритмически, но и по вычислительным ресурсам.
Если бы не было рассинхронов в MT5 (в MT4 их нет, например), то было бы плевать на скорость работы HistorySelect и внутренний алгоритм формирования данных этой функцией. А так сейчас огромные торговые риски задвоения позиций. Лаконичные коды, воспроизводящие такие рассинхроны, многократно приводил.
Просто я, действительно, торгую и делаю это активно. Поэтому в теме. И бьюсь за торговый функционал, понимая, почему иногда на форуме возникают вопросы у внимательных алготрейдеров, что видят задвоения позиций и другие приколы.