![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я уже проверил :)
Проверил на каком типе счёта?
итак, представляю на суд новую функцию. Всё сортирует и закрывает сначала большие объёмы.
Особенности:
1.Не считаем ничего лишнего, сразу игнорим одиночные позиции и ситуацию когда по символу открыты позы только в одну сторону.
2.Скорость работы по сравнению с первым вариантом выросла примерно на 60% (для точности надо сделать норм тесты, но мне уже было лень, замерил на 1 прогоне :)
3.Код вырос значительно, но это всё благодаря структурам. Удобство именования элементов оборачивается невозможностью прогнать их в цикле
4.Код можно немного сжать, если некоторые повторяющиеся моменты вынести в отдельные функции, но хотелось чтобы это была 1 функция, поэтому кое где занимался копипастом :)
5.Неожиданно обнаружилась ошибка в стандартной библиотеке. Вот она:
посмотрел код библиотеки Trade.mqh и увидел что после отправки торгового запроса, на основе структуры MqlTradeRequest формируется текстовое сообщение и том что было сделано. Так вот, если поле action=TRADE_ACTION_CLOSE_BY то это событие не прописано. Конкретно по шагам выглядит так: В файле Trade.mqh доходим до строки 961 (switch(request.action)) и уходим в default ввиду отсутствия описания события. Отправлю репорт в сервис деск.
6.Можно ещё немного увеличить скорость, отказавшись от стандартной библиотеки и описав торговые запросы самостоятельно.
Буду рад если кто нить выложит свою аналогичную функцию. Интересует сравнение скорости. Ну и так же если есть комментарии и предложения, то готов выслушать.
Тестил всё вот таким простым роботом.
Что удивительно, первая функция в конце оставила меньше позиций чем вторая. Крайне неожиданно, думал будет наоборот. Но по объёмам посчитал вроде всё ок. Любопытно почему та получилось. По уму бы сделать трассировку обоих функций и сравнить, но уже лень.