
- www.mql5.com
решил переписать своего советника из процедурного стиля в ООП.
Написал примерно такой код:
На выходе хочу получить верх канала и низ канала. это 2 разных цены.
как правильней организовать такой канал ну к примеру для канала Дончиана?
Например:
или
Правильно ли вписывать h и l в поля класса или правильней их получать через метод?
Может есть какой то другой подход? Чем тогда он лучше ?
Твк же вопрос, стоит ли поле класса period делать приватным и назначать ему значение через метод ? или сделать публичным и наз начить ему значение из инпут перменной. типа
period = W_PERIOD ;
Зачем вообще в таком случае заморачиваться с классами когда можно просто понаписывать 2 фукции И не париться ? В чем преимущество такого класса?
хотите сделать ООП, чтобы потом удобно пользоваться - обобщайте, продумывайте интерфейс и варианты использования.
И ещё, в местной песочнице принято производить классы из CObject и прочих CIndicator. Не знаток "стандартной библиотеки", но в ней или кодобазе наверняка есть какой-нить CChannelIndicator который уже реализует необходимый минимум для каналов
Главный принцип ООП: Если Вы создаёте какой-то класс, Вы должны знать зачем Вы это делаете. Не знаете не создавайте.
Из того что Вы сказали, совершенно непонятно что Вы с ним собираетесь делать.
Поэтому непонятно как его правильно написать.
решил переписать своего советника из процедурного стиля в ООП.
Переписывать из процедурного кода в ООП имеет смысл только для упаковки, когда код уже готов и отлажен.
Если планируется работа с кодом, то ОПП лишь усложнит понимание и как следствие работу с ним, что впрочем является преимуществом когда код пишется за деньги и важно количество строк кода.
Переписывать из процедурного кода в ООП имеет смысл только для упаковки, когда код уже готов и отлажен.
Если планируется работа с кодом, то ОПП лишь усложнит понимание и как следствие работу с ним, что впрочем является преимуществом когда код пишется за деньги и важно количество строк кода.
Просто бред.
Также не стоит забывать что классы в ООП не предназначены для обмена информации между собой, что делает невозможным адекватное написание вычислительных алгоритмов, которые требуют отладки и обмена данных из функций в разных классах.
Что за ерунда ?
У меня классы в ООП только тем и занимаются, что "обмениваются информацией между собой".
Чисто вычислительные алгоритмы (скажем, МНК) - у меня также организованы в виде класса, на вход которому подаются исходные данные, а с него можно получить коэффициенты степенного многочлена.
Правильно ли вписывать h и l в поля класса или правильней их получать через метод?
Может есть какой то другой подход? Чем тогда он лучше ?
Твк же вопрос, стоит ли поле класса period делать приватным и назначать ему значение через метод ? или сделать публичным и наз начить ему значение из инпут перменной. типа
period = W_PERIOD ;
Зачем вообще в таком случае заморачиваться с классами когда можно просто понаписывать 2 фукции И не париться ? В чем преимущество такого класса?
ООП позволяет гораздо эффективнее проводить дальнейшую поддержку и модификацию кода.
Как правило, объекты строятся по принципу "внутри - данные, снаружи - функции".
То есть, массивы значений верхней и нижней границ (и, возможно, медианы) - у тебя хранятся в защищенной или приватной секции. А пользователь твоего канала - может получить их через соответствующие функции. То есть, функции доступа к данным - представляют интерфейс работы с каналом. Этот интерфейс можно даже вынести в класс-предок, у которого все функции чисто виртуальны (приравнены к нулю). И пользователь канала - получает этот самый виртуальный интерфейс, не имея никакого доступа к реальным данным.
Такая организация позволяет не думать о том, на какие блоки повлияют изменения внутри канала.
Ты пишешь вычисления границ и центра канала, исходя из интерфейсных запросов. Задача - обеспечить выдачу необходимых данных по интерфейсным функциям. При этом - тебе совершенно все равно, кому эти данные будут переданы.
И наоборот - ты, когда пишешь пользователя канала - совершенно не задумываешься над тем, как у тебя организованы данные внутри класса. Есть интерфейс - и ты его и используешь для получения границ канала.
Такая инкапсуляция позволяет в любом месте программы иметь доступ только к тем данным, которые нужны, остальные будут недоступны - что убережет тебя от ошибок.
Что за ерунда ?
У меня классы в ООП только тем и занимаются, что "обмениваются информацией между собой".
Чисто вычислительные алгоритмы (скажем, МНК) - у меня также организованы в виде класса, на вход которому подаются исходные данные, а с него можно получить коэффициенты степенного многочлена.
У как эти коэффициенты извлекаются из класса?
И наоборот - ты, когда пишешь пользователя канала - совершенно не задумываешься над тем, как у тебя организованы данные внутри класса.
Вот именно организацию данных внутри класса и нужно знать для процесса отладки и написания кода, так как это постоянно меняется по ходу дела.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
решил переписать своего советника из процедурного стиля в ООП.
Написал примерно такой код:
На выходе хочу получить верх канала и низ канала. это 2 разных цены.
как правильней организовать такой канал ну к примеру для канала Дончиана?
Например:
или
Правильно ли вписывать h и l в поля класса или правильней их получать через метод?
Может есть какой то другой подход? Чем тогда он лучше ?
Твк же вопрос, стоит ли поле класса period делать приватным и назначать ему значение через метод ? или сделать публичным и наз начить ему значение из инпут перменной. типа
period = W_PERIOD ;
Зачем вообще в таком случае заморачиваться с классами когда можно просто понаписывать 2 фукции И не париться ? В чем преимущество такого класса?