Особенности языка mql5, тонкости и приёмы работы - страница 234
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Замеряете длительность и получаете результат. У меня случилось на TRADE_ACTION_MODIFY.
откуда, до куда, что и в каких условиях измерялось ?
просто OrderSendAsync MODIFY и до непосредственно следующей операции 5 сек ??
очень странный, пугающий, неправдоподобный результат - надо перепроверять тесты
откуда, до куда, что и в каких условиях измерялось ?
просто OrderSendAsync MODIFY и до непосредственно следующей операции 5 сек ??
очень странный, пугающий, неправдоподобный результат - надо перепроверять тесты
Замерил время до и после функции, посчитал разницу и получил 5 секунд. В боевых советниках все замеряется, чтобы потом было больше информации разобрать нештатную ситуацию. Увидел это.
Понадобилось создать структуры, которым можно было бы задавать различные правила действий внутри, но при этом манипулировать ими между собой, как одинаковыми.
Примененный прием оформил на таком примере.
К сожалению, не понял, почему в ООП-языках нет интерфейсов для статических методов.
К сожалению, не понял, почему в ООП-языках нет интерфейсов для статических методов.
Приходится лепить такой ужас.
Понадобилось создать структуры, которым можно было бы задавать различные правила действий внутри, но при этом манипулировать ими между собой, как одинаковыми.
Примененный прием оформил на таком примере.
К сожалению, не понял, почему в ООП-языках нет интерфейсов для статических методов.
А как ты это представляешь?
Любая функция имеет свой адрес в сегменте .text.
Любая функция-член (метод), первым параметром неявно принимает указатель this.
Статические методы не принимают указатель this и, по сути своей, являются синтаксическим "сахаром", являясь, де-факто обычными функциями.
При вызове виртуальной функции, адрес исполняемой функции берется из таблицы виртуальных функций, указатель на которую неявно содержится в классе, в котором объявлена виртуальная функция. Инициализация указателя на исполняемую функцию происходит при создании экземпляра объекта, логика при этом примерно такая (специально, что бы всем неофитам понятно было, на mql пишу:
Естественно, реально там все не так, но механизм инициализации указателя на функцию именно такой. Соответственно, никак, от слова вообще, невозможно, в компилируемом ЯП, сделать так как ты хочешь.
В C++ вот такая шаблонная магия есть:
Любая функция имеет свой адрес в сегменте .text.
Любая функция-член (метод), первым параметром неявно принимает указатель this.
Статические методы не принимают указатель this и, по сути своей, являются синтаксическим "сахаром", являясь, де-факто обычными функциями.
При вызове виртуальной функции, адрес исполняемой функции берется из таблицы виртуальных функций, указатель на которую неявно содержится в классе, в котором объявлена виртуальная функция. Инициализация указателя на исполняемую функцию происходит при создании экземпляра объекта, логика при этом примерно такая (специально, что бы всем неофитам понятно было, на mql пишу:
Естественно, реально там все не так, но механизм инициализации указателя на функцию именно такой.
Спасибо за подробное объяснение с примером!
А как ты это представляешь?
Если речь про мое сожалению по поводу возможностей интерфейсов. То мне хочется исключительно синтаксическое ограничение навесить на классы/структуры. Т.е. только на этапе компиляции, как это происходит с тем же модификатором const. Для самоконтроля, короче.
никак, от слова вообще, невозможно, в компилируемом ЯП, сделать так как ты хочешь.
Выше написал костыль. Хотел получить нечто уже встроенное для таких случаев.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3950: Снятие/пополнение в терминале и обновленный торговый отчет
fxsaber, 2023.09.19 23:25
Как избавиться от ошибок?Первый раз __LINE__/__COUNTER__ передаются внутри маркоса в виде текста, второй - числа.
Придумал два решения, как это можно обойти.
1. Через базовый класс:
2. Через вложенный класс: