Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 508
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вот так короче? bool barup=... WindowRedraw(); все равно выполнится - вынес из if
можно еще короче ... посмотрите мой файл
Как бы постановка вопроса, вроде, понятна же. Смысл инициализировать одно и то же.
Как вы собираетесь инициализировать то, чего ещё не существует? После создания объекта он начинает существовать, и вот тогда его уже можно инициализировать.
Я вам сразу сказал - сделайте у объекта параметрический конструктор, и передавайте в него нужные параметры, которыми и будет инициализирован вновь созданный объект.
Можете передавать параметры через структуру, которую заполняете нужными (постоянными для всех таких объектов) данными в OnInit() программы. Далее, в OnTick(), например, или в другом стандартном обработчике, создаёте свои объекты, но при создании пишете, например так:
CMyObject object = new CMyObject(а_здесь_структура_с_установленными_параметрами);
Либо, если у вас вообще данные объекта не меняются от программы к программе, и всегда имеют одни и те же значения, то в конструкторе явно их инициализируйте нужными параметрами посредством списка инициализации как выше сказал Игорь:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Ihor Herasko, 2018.03.28 17:31
Это делается в списке инициализации, который располагается в конструкторе класса:
Как вы собираетесь инициализировать то, чего ещё не существует? После создания объекта он начинает существовать, и вот тогда его уже можно инициализировать.
Я вам сразу сказал - сделайте у объекта параметрический конструктор, и передавайте в него нужные параметры, которыми и будет инициализирован вновь созданный объект.
Можете передавать параметры через структуру, которую заполняете нужными (постоянными для всех таких объектов) данными в OnInit() программы. Далее, в OnTick(), например, или в другом стандартном обработчике, создаёте свои объекты, но при создании пишете, например так:
CMyObject object = new CMyObject(а_здесь_структура_с_установленными_параметрами);
Да, понятно. Спасибо. Ну как-то просто думал есть какое-то решение, чтобы при создании объект сразу имел какие-то предустановленные параметры без необходимости их передачи в конструктор или ещё как. Через какой-то родительский класс или ещё как.
В классе у меня в качестве параметров в том числе есть всякая ерунда вроде параметров индикаторов и пр. В общем, то, что будет статично и одинаково. Зачем же мне каждый раз передавать эти значения при создании объекта?
Так не передавайте. Инициализируйте в списке инициализации, как я показал. В момент создания экземпляра класса автоматически будет вызван конструктор класса, что повлечет за собой инициализацию всех членов класса, указанных в списке инициализации. Поставьте в методе CCandle функцию Print и увидите, как конструктор вызывается без всякого обращения к нему.
Да, понятно. Спасибо. Ну как-то просто думал есть какое-то решение, чтобы при создании объект сразу имел какие-то предустановленные параметры без необходимости их передачи в конструктор или ещё как. Через какой-то родительский класс или ещё как.
Еще раз. Можно без передачи данных в конструктор.
Так не передавайте. Инициализируйте в списке инициализации, как я показал. В момент создания экземпляра класса автоматически будет вызван конструктор класса, что повлечет за собой инициализацию всех членов класса, указанных в списке инициализации. Поставьте в методе CCandle функцию Print и увидите, как конструктор вызывается без всякого обращения к нему.
Не понял я, какая разница, через конструктор ли их передавать или через функцию инициализации?
Так не передавайте. Инициализируйте в списке инициализации, как я показал. В момент создания экземпляра класса автоматически будет вызван конструктор класса, что повлечет за собой инициализацию всех членов класса, указанных в списке инициализации. Поставьте в методе CCandle функцию Print и увидите, как конструктор вызывается без всякого обращения к нему.
Чем они будут инициализированы? Какими значениями? Непонятно
Допустим, исходные значения у меня во входных параметрах эксперта. Вот мне надо их передать каждому объекту этого класса. Но чтоб не передавать каждому вновь созданному.
здравтсвуйте, подскажите почему при таком цикле у меня удаляются лимитные ордера только если после установки лимитного ордера, на след. баре не было установлено еще одного лимитного ордера, т.е лимитник удаляется только если он установлен и после этого следуют 2 бара на которых небыло лимитных ордеров
Чем они будут инициализированы? Какими значениями? Непонятно
Теми, которые запишите в списке инициализации.
Допустим, исходные значения у меня во входных параметрах эксперта. Вот мне надо их передать каждому объекту этого класса. Но чтоб не передавать каждому вновь созданному.
Да вот же:
Если запустить, то получим: