...
Говорю, - наш базовый класс будет Древнейшие жгутиковые. Имеет базовый функционал, только самое необходимое. А от него будем рождать классы Простейшие, Многоклеточные и т.д. При этом каждый потомок будет содержать в себе весь функционал родителя.
...
К сожалению, идея наследования оказалась палкой о двух концах. Можно нечаяно и себя зашибить. Поэтому лучше использовать наследование очень ограниченно.
В этом советнике, скорее всего, будет не более двух звеньев наследования. Рисунок просто для демонстрации наследования. Я сам не сторонник усложнения ) Вот Господь Бог... тот любит поразвлечься)))
Насчет "зашибить" смотрим стандартную библиотеку, там довольно глубокий уровень, особенно в Controls.
В этом советнике, скорее всего, будет не более двух звеньев наследования. Рисунок просто для демонстрации наследования. Я сам не сторонник усложнения ) Вот Господь Бог... тот любит поразвлечься)))
Насчет "зашибить" смотрим стандартную библиотеку, там довольно глубокий уровень, особенно в Controls.
К сожалению, идея наследования оказалась палкой о двух концах. Можно нечаяно и себя зашибить. Поэтому лучше использовать наследование очень ограниченно.
А можно привести пример "зашиба" ?
Я вот, наоборот, всегда стремлюсь как можно шире использовать наследование и полиморфизм. Очень удобно иметь виртуальные функции, которые по мере необходимости вызываются именно у тех объектов, которые созданы...
Бывают случаи, что все наследники несут функционал класса предка, который наследникам уже не нужен - но здесь никаких особых проблем я не вижу. Не используй, да и все тут. Я уж не говорю о защищенном наследовании, когда пользователи класса - уже не могут обращаться к функциям предка, и, здесь очень просто можно "убрать лишний функционал".
А можно привести пример "зашиба" ?
Я вот, наоборот, всегда стремлюсь как можно шире использовать наследование и полиморфизм. Очень удобно иметь виртуальные функции, которые по мере необходимости вызываются именно у тех объектов, которые созданы...
Бывают случаи, что все наследники несут функционал класса предка, который наследникам уже не нужен - но здесь никаких особых проблем я не вижу. Не используй, да и все тут. Я уж не говорю о защищенном наследовании, когда пользователи класса - уже не могут обращаться к функциям предка, и, здесь очень просто можно "убрать лишний функционал".
Хорошо написано. Я в этом проекте широко использую виртуальные функциями, очень удобно. У классов-наследников разное "поведение", но одинаковый интерфейс. В MQL нет понятия интерфейс, но его нетрудно сымитировать.
Уже возникают мысли поместить экземпляры всех наследников в массив и запускать их в цикле с вызовом виртуальных функций. И каким-то образом, пока не придумал, отбирать наиболее удачные сигналы. Пока неясно, как определять "удачливость". То есть появляется возможность сделать оптимизацию на лету, подстраиваясь под меняющийся рынок.
Думаю, это лучше сделать не в рабочем советнике, а в его небольшой модификации, работающей параллельно с записью информации хотя бы в файл, тут скорость обмена не важна.
Насчет "функционал класса предка, который наследникам уже не нужен" - да и бог с ним, все равно функции существуют в памяти в одном экземпляре. Память под данные, конечно, будет выделяться для каждого экземпляра, но сейчас, с гигабайтами ОЗУ это не очень важно.
Пишу клиенту советника, а ситуация следующая. Нет четкого ТЗ по всем пунктам, но есть идеи, которые он хочет проверить. То есть работа ближе к исследовательской.
Говорит, я даже не знаю, как быть, есть варианты входов, хочется их попробовать, можно так сделать? Придется писать несколько вариантов советника? А входы по объему в одну функцию явно не вместить, причем они должны рождаться динамически по рынку. То есть их может быть 1... N. Я упрощенно описываю ситуацию.
Говорю, сделаем базовый класс, где будет все неизменное, а от него будем рождать потомков с измененным поведением.
- А что такое класс?
Клиент немного понимает MQL, но не программист. Стал объяснять, чувствую, не понимает.
Нарыл в инете картинку классификации видов животных. Говорю, представим упрощенно, что все они произошли строго друг от друга ) Я в курсе, что это не так, но примем такое допущение.
Говорю, - наш базовый класс будет Древнейшие жгутиковые. Имеет базовый функционал, только самое необходимое. А от него будем рождать классы Простейшие, Многоклеточные и т.д. При этом каждый потомок будет содержать в себе весь функционал родителя.
- А, ясно! И даже Млекопитающие будут иметь функционал Древнейших жгутиковых, я прав?
- Да, все верно.
Теперь думаю, как бы это дело оптимально использовать в тестере, стратегия не скальперская и не тиковая, для тестера подходит. А еще в пугающих загадках, кто такие Сосальщики ))
**
Пишу клиенту советника, а ситуация следующая. Нет четкого ТЗ по всем пунктам, но есть идеи, которые он хочет проверить. То есть работа ближе к исследовательской.
Говорит, я даже не знаю, как быть, есть варианты входов, хочется их попробовать, можно так сделать? Придется писать несколько вариантов советника? А входы по объему в одну функцию явно не вместить, причем они должны рождаться динамически по рынку. То есть их может быть 1... N. Я упрощенно описываю ситуацию.
Говорю, сделаем базовый класс, где будет все неизменное, а от него будем рождать потомков с измененным поведением.
- А что такое класс?
Клиент немного понимает MQL, но не программист. Стал объяснять, чувствую, не понимает.
Нарыл в инете картинку классификации видов животных. Говорю, представим упрощенно, что все они произошли строго друг от друга ) Я в курсе, что это не так, но примем такое допущение.
Говорю, - наш базовый класс будет Древнейшие жгутиковые. Имеет базовый функционал, только самое необходимое. А от него будем рождать классы Простейшие, Многоклеточные и т.д. При этом каждый потомок будет содержать в себе весь функционал родителя.
- А, ясно! И даже Млекопитающие будут иметь функционал Древнейших жгутиковых, я прав?
- Да, все верно.
Теперь думаю, как бы это дело оптимально использовать в тестере, стратегия не скальперская и не тиковая, для тестера подходит. А еще в пугающих загадках, кто такие Сосальщики ))
**
Вы бы лучше ТЗ описали, а то непонятно, о чем вы и причем тут классы.
Какое ТЗ - которое мне выдал заказчик? )) Это, по вашему, политкорректно?
А классы при всем. Или для вас это некая экзотика? Для меня обыденный рабочий инструмент.
Таких надо отправлять что бы сами сначала определились чего хотят а затем просили... Или пусть в ручную протестируют то что не знают...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу клиенту советника, а ситуация следующая. Нет четкого ТЗ по всем пунктам, но есть идеи, которые он хочет проверить. То есть работа ближе к исследовательской.
Говорит, я даже не знаю, как быть, есть варианты входов, хочется их попробовать, можно так сделать? Придется писать несколько вариантов советника? А входы по объему в одну функцию явно не вместить, причем они должны рождаться динамически по рынку. То есть их может быть 1... N. Я упрощенно описываю ситуацию.
Говорю, сделаем базовый класс, где будет все неизменное, а от него будем рождать потомков с измененным поведением.
- А что такое класс?
Клиент немного понимает MQL, но не программист. Стал объяснять, чувствую, не понимает.
Нарыл в инете картинку классификации видов животных. Говорю, представим упрощенно, что все они произошли строго друг от друга ) Я в курсе, что это не так, но примем такое допущение.
Говорю, - наш базовый класс будет Древнейшие жгутиковые. Имеет базовый функционал, только самое необходимое. А от него будем рождать классы Простейшие, Многоклеточные и т.д. При этом каждый потомок будет содержать в себе весь функционал родителя.
- А, ясно! И даже Млекопитающие будут иметь функционал Древнейших жгутиковых, я прав?
- Да, все верно.
Теперь думаю, как бы это дело оптимально использовать в тестере, стратегия не скальперская и не тиковая, для тестера подходит. А еще в пугающих загадках, кто такие Сосальщики ))
**