Если у вас советник из трех строк, то конечно ООП не нужно)
Вот кабы мне нужно было создать Гоблина с одной рукой и тремя ногами, а потом с одной ногой и тремя руками - то да, тут ООП бы меня реально выручил. Хотя... тоже не факт.
Только int или double? А если переменная - объект класса? А если количество таких объектов заранее [до выполнения OnInit()] неизвестно ? А если параметры конструкторов заранее [до выполнения OnInit()] неизвестны?
Ты хорошую ссылку дал и там хороший пример по поводу объявления классов.
В любом случае Глобальные объявляются до OnInit(), остальные объявляются каждый раз по мере необходимости
В любом случае Глобальные объявляются до OnInit(), остальные объявляются каждый раз по мере необходимости
В теории это понятно. На практике, после :
declaration of 'NB_M1' hides global variable -> на строку в OnInit()
see previous declaration of 'NB_M1'
эксперт работает так, как бы NB_M1 была глобальной (и правильно инициализированной), хотя она и скрыта локальной декларацией и проинициализирована как локальная в OnInit().
Когда у вас само собой наберется сотня-другая строк кода, потому что хочется прикрутить с начала это, а вот это уже забыл зачем, потом прикрутить ещё и это, то естественным образом (?) возникнет мысль: "А как бы это дело упорядочить?" Или не возникнет)
Mikhail Tkachev: NB_M1 является объектом этого класса. Как же её внутрь засунуть ?
думаю так надо
bool NB_M1;
intOnInit()
{
}
voidOnTick()
{
NB_M1=new CIsNewBar(_Symbol,PERIOD_M1); // Эта строка потом будет в цикле для разных символовif (NB_M1) // (1) Если появился новый бар M1
{....}
......
}
Если у вас советник из трех строк, то конечно ООП не нужно)
Вот кабы мне нужно было создать Гоблина с одной рукой и тремя ногами, а потом с одной ногой и тремя руками - то да, тут ООП бы меня реально выручил. Хотя... тоже не факт.
А тут то нафига оно нужно?
И совсем не важно сколько у Вас "строк". ;)Только int или double?
А если переменная - объект класса?
А если количество таких объектов заранее [до выполнения OnInit()] неизвестно ?
А если параметры конструкторов заранее [до выполнения OnInit()] неизвестны?
Ты хорошую ссылку дал и там хороший пример по поводу объявления классов.
В любом случае Глобальные объявляются до OnInit(), остальные объявляются каждый раз по мере необходимости
В любом случае Глобальные объявляются до OnInit(), остальные объявляются каждый раз по мере необходимости
В теории это понятно.
На практике, после :
declaration of 'NB_M1' hides global variable -> на строку в OnInit()
see previous declaration of 'NB_M1'
эксперт работает так, как бы NB_M1 была глобальной (и правильно инициализированной), хотя она и скрыта локальной декларацией и проинициализирована как локальная в OnInit().
По идее, оно не должно работать вообще.
В теории это понятно.
На практике, после :
declaration of 'NB_M1' hides global variable -> на строку в OnInit()
see previous declaration of 'NB_M1'
эксперт работает так, как бы NB_M1 была глобальной (и правильно инициализированной), хотя она и скрыта локальной декларацией в OnInit().
По идее, оно не должно работать вообще.
И совсем не важно сколько у Вас "строк". ;)Когда у вас само собой наберется сотня-другая строк кода, потому что хочется прикрутить с начала это, а вот это уже забыл зачем, потом прикрутить ещё и это, то естественным образом (?) возникнет мысль: "А как бы это дело упорядочить?" Или не возникнет)
А что такое NB_M1? Возможно она уже объявлена в библиотеке? И вообще без кода, как глухой со слепым)
NB_M1 - объект класса CIsNewBar для определения начала нового бара для каждого символа. Нет, в библиотеке она не объявлена.
Код в первом сообщении : https://www.mql5.com/ru/forum/160683/page1547#comment_23712294
NB_M1 - объект класса CIsNewBar для определения начала нового бара для каждого символа. Нет, в библиотеке она не объявлена.
Код в первом сообщении : https://www.mql5.com/ru/forum/160683/page1547#comment_23712294
значить NB_M1 объявляется внутри класса и там же доступ
а можно взглянуть на код этого класса?
NB_M1 является объектом этого класса. Как же её внутрь засунуть ?
NB_M1 является объектом этого класса. Как же её внутрь засунуть ?
думаю так надо