Dmitiry Ananiev:
Сделать абстрактный класс, который будет являться предком обоих этих классов.Ситуация такая:
Есть два класса
оба класса имеют метод SetTrade типа:
который вызывается в OnInit. В OnTimer() отрабатывает другой метод но с уже сохраненными данными которые вызывались в OnInit.
Хочу сделать селектор выбора типа Как торговать: Маркет или лимитными ордерами.
При этом уж создано много объектов в советнике.
типа:
например для лимитных ордеров и объявлен этот массив на глобальном уровне.
Как сделать типа
перенести это в OnInit() и сделать через статик - не получается.
через #ifdef - тоже.
Подозреваю что надо это как-то сделать через один общий класс, но как это оформить не знаю.
Какие варианты ?
При этом не хотелось бы делать 2 массива объектов.
Объявить переменную-ссылку на тот абстрактный класс, через которую и будет последующее обращение к методам.
В OnInit проинициализировать ту переменную ссылкой на конкретный объект класса-потомка.
class TradeBase { protected: string Settings; public: TradeBase( const string sSettings ): Settings(sSettings) { } virtual void Trade( void ) {} }; class TradeMarket : public TradeBase { public: TradeMarket( const string sSettings ) : TradeBase(sSettings) { } virtual void Trade( void ) { // Market logic. ::Print(__FUNCSIG__ + ", Settings: " + this.Settings); } }; class TradeLimit : public TradeBase { public: TradeLimit( const string sSettings ) : TradeBase(sSettings) { } virtual void Trade( void ) { // Limit logic. ::Print(__FUNCSIG__ + ", Settings: " + this.Settings); } }; input bool inMarket = false; // Market/Limit input string inSettings = "Example"; // Settings TradeBase* System = NULL; void OnInit() { if (inMarket) System = new TradeMarket(inSettings); else System = new TradeLimit(inSettings); } void OnDeinit( const int ) { delete System; } void OnTick() { System.Trade(); }
Вот уже и пример реализации подвезли! :)

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ситуация такая:
Есть два класса
оба класса имеют метод SetTrade типа:
который вызывается в OnInit. В OnTimer() отрабатывает другой метод но с уже сохраненными данными которые вызывались в OnInit.
Хочу сделать селектор выбора типа Как торговать: Маркет или лимитными ордерами.
При этом уж создано много объектов в советнике.
типа:
например для лимитных ордеров и объявлен этот массив на глобальном уровне.
Как сделать типа
перенести это в OnInit() и сделать через статик - не получается.
через #ifdef - тоже.
Подозреваю что надо это как-то сделать через один общий класс, но как это оформить не знаю.
Какие варианты ?
При этом не хотелось бы делать 2 массива объектов.