![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В боевых советниках везде в подозрительных местах облачил функции в _B(FuncName(...), AlertTime).
Забыл, что это очень дорого.
ЗЫ На каждом тике в лучшем случае трачу суммарно десятки миллисекунд только из-за HistorySelect.
Профилирование боевого советника.
Зачем вообще использовать дорогой HS, кроме как при старте робота?
Написал в начале ветки.
Вы делаете OrderSend. Если СРАЗУ после окончания OrderSend определенная позиция не закрылась по тейку, то делаете еще один OrderSend. Это вся логика, которую надо запрограммировать. Async не используем.
Теперь ситуация, которая произошла для нашего робота. Вы отправили OrderSend, и пока он выполнялся произошло срабатывание лимитника и после этого срабатывание тейка нашей позиции, что упоминал выше.
Вот здесь я действительно ничего не понял - если есть возможность распишите пожалуйста более детально по шагам. Единственное что понял, что используется только обработчик событий OnTradeTransaction, а значит управление приоритетом обработки событий не требуется, а предлагаемая
bool HandleNextEvent(ENUM_EVENT_TYPE);
вырождается в
bool HandleNextEvent();
Вот здесь я действительно ничего не понял - если есть возможность распишите пожалуйста более детально по шагам.
А почему нельзя после вызова OrderSend сделать return ?
в следующий раз Вы вернетесь в OnMain когда новое событие уже будет добавлено в очередь (либо по таймеру)
A100:
А почему нельзя после вызова OrderSend сделать return ?
Нет на это ограничений.
в следующий раз Вы вернетесь в OnMain когда новое событие уже будет добавлено в очередь (либо по таймеру)
Следующее событие - исполнение отложки, а не тейка позиции.
Следующее событие - исполнение отложки, а не тейка позиции.
Предлагается делать неоднократный возврат (return), пока Вы или всю текущую очередь не прочитаете или на заданное число событий. Когда торговые события закончатся - будет возврат по таймеру и у Вас будет доступ сразу ко всем событиям