Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода) - страница 25
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в ЛС бросил сервер
На этом сервере (точнее, в софте брокера) стоит защита от спама. К следующей неделе планируют ее обновить, тогда тормоза уйдут.
Надо будет посмотреть этот сервер. Хорошо бы проверить предложенный здесь костыль, для кого это видится важным.
Возвращаться к этом теме спустя время очень не хотелось бы. Лучше сразу указать на баги, если есть.
В MT4-style пока нет варианта?
Просто позапускать скрипт, открывающий 100 позиций, на разных серверах?
В MT4-style пока нет варианта?
Еще не приступал. Скорее всего, пользователь ничего не будет менять в коде. Задействоваться доп. функционал будет через макрос.
Просто позапускать скрипт, открывающий 100 позиций, на разных серверах?
Да, на разных серверах, но только другой скрипт. Если за минуты работы не возникает задвоения - прошел проверку успешно. Иначе - провал.
Еще не приступал. Скорее всего, пользователь ничего не будет менять в коде. Задействоваться доп. функционал будет через макрос.
Сделал.
Было.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
fxsaber, 2021.05.11 09:05
Без ожидания позиции - результат сразу.
Стало.
Теперь ничем не отличается от MT4-варианта, включая надежность.
Любые примеры, что столь тяжело написать в MT5, стали легко реализуемыми, как и должно быть.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
Igor Makanu, 2021.05.10 10:28
вроде так работает:
но очень медленно, да и решение такое себе
Что будет, если после выставления приказа на открытие 10й позиции, на следующей итерации при выполнении условия
PositionTotal еще не успел обновиться (=9), а ордер уже успел уйти в историю и OrdersTotal()==0.
1. Тогда будет выполнен еще один Trade.Buy()?
2. Теоретически такое может повториться несколько итераций подряд?
Или я что-то не учел?
Что будет, если после выставления приказа на открытие 10й позиции, на следующей итерации при выполнении условия
PositionTotal еще не успел обновиться (=9), а ордер уже успел уйти в историю и OrdersTotal()==0.
1. Тогда будет выполнен еще один Trade.Buy()?
2. Теоретически такое может повториться несколько итераций подряд?
Или я что-то не учел?
это его высокочастотные интересы, остальным достаточно тайм-ауты, и нет проблем со вторым заходом
уверен в МТ4 так и построено, ожидание-пришлоЧто будет, если после выставления приказа на открытие 10й позиции, на следующей итерации при выполнении условия
PositionTotal еще не успел обновиться (=9), а ордер уже успел уйти в историю и OrdersTotal()==0.
1. Тогда будет выполнен еще один Trade.Buy()?
Конечно, будет. Ведь логика в коде именно такая.
2. Теоретически такое может повториться несколько итераций подряд?
Если Buy будет true, то почти нулевая вероятность, что на следующей итерации будет OrdersTotal() == 0. Т.е. открытие 12-ти позиций невозможно на практике.
Здесь очень примитивный случай показан. Задвоение часто выглядит так:
Так вот на втором шаге советник видит, что ничего нет и выставляет лимитник. В итоге две открытые позиции.
Второй пункт - это и есть рассинхрон MT5. И теперь костыль его обходит.
Спасибо.
По поводу этого:
fxsaber:
Задвоения - это не сложности MT5, а архитектурный баг, когда Total()-функции показывают ложь.Можно сказать, что баг, а можно преподнести иначе :-)
PositionsTotal() - это не количество открытых позиций, а размер Таблицы открытых позиций. Таблица позиций - это фактически кэш, аналогично кэшу истории сделок, только он обновляется не по запросу, а автоматически, но не мгновенно, а с небольшой задержкой. Из-за этого он может не содержать уже открытые позиции, или содержать уже закрытые.
с OrdersTotal() то же самое.
Если в справке так расписать, то будет намного меньше вопросов, жалоб и непонимания.
И в статье "Ордерa, позиции и сделки в MetaTrader 5" можно на это обратить внимание (сейчам там двусмысленно - "Результат выполнения функции PositionsTotal() не зависит от заполненности кэша позиций - она всегда возвращает реальное количество открытых позиций в базе терминала по всем символам.")
P.S. но тогда возникает закономерный вопрос - почему не сделать системную ф-ию/флаг для определения состояния синхронизации таблиц живых ордеров, позиций, сделок и выполненных ордеров, чтобы не плодить костыли?P.S. но тогда возникает закономерный вопрос - почему не сделать системную ф-ию/флаг для определения состояния синхронизации таблиц живых ордеров, позиций, сделок и выполненных ордеров, чтобы не плодить костыли?
Скорее всего, внутри такого флага нет.