- Какого типа могут быть глобальные переменные ?
- Передача объекта по ссылке
- Ошибки, баги, вопросы
А документацию почитать? Я только-что читал об этом. Делаешь конструкторы с разным набором параметров и все дела.
Или вопрос в чём-то другом?
- www.mql5.com
А документацию почитать? Я только-что читал об этом. Делаешь конструкторы с разным набором параметров и все дела.
Или вопрос в чём-то другом?
Количество параметров неизвестно заранее, поэтому нельзя под каждый случай сделать конструктор с определённым набором параметров.
Количество параметров неизвестно заранее, поэтому нельзя под каждый случай сделать конструктор с определённым набором параметров.
На C# я такое делал, там при разборе можно получить тип передаваемого параметра. В MQL4/5 ведь такого нет.
Можно попробовать извратится и сделать типа такого. Но я не пробовал. То есть передавать массив указателей на классы, производные от CBase, при этом они кастятся к CBase*. Вроде должно сработать
enum TYPE_VAR {EInteger, EDouble,......, EEnd} class CBase { public: TYPE_VAR type; } class DataDouble : public CBase { public: double d; } bool NextDay(CBase* &arr[]) { } void OnStart() { }
На C# я такое делал, там при разборе можно получить тип передаваемого параметра. В MQL4/5 ведь такого нет.
Можно попробовать извратится и сделать типа такого. Но я не пробовал. То есть передавать массив указателей на классы, производные от CBase, при этом они кастятся к CBase*. Вроде должно сработать
На C# я такое делал, там при разборе можно получить тип передаваемого параметра. В MQL4/5 ведь такого нет.
Можно попробовать извратится и сделать типа такого. Но я не пробовал. То есть передавать массив указателей на классы, производные от CBase, при этом они кастятся к CBase*. Вроде должно сработать
В MQL5 нельзя такое:
int Func(int a,...) { }
В MQL5 нельзя такое:
Я разве писал о таком??? Я писал
bool Function(CBase* &arr[])
Я разве писал о таком??? Я писал
А я увидел это:
поэтому сразу и уточнил.
Но это лирика, пока вроде нет способа задать переменное количество разнотипных параметров.А я увидел это:
поэтому сразу и уточнил.
Но это лирика, пока вроде нет способа задать переменное количество разнотипных параметров.А-а, ну это я просто не стал расписывать все типы параметров ))) Поставил многоточие. Вспомнил, у меня был подобный случай на MQL, я просто все типы данных передавал в массиве, как double. Ведь потом из double можно обратно каститься на любой тип данных.
Решение оказалось уже есть: Структура входных параметров индикатора
struct MqlParam { ENUM_DATATYPE type; // тип входного параметра, значение перечисления ENUM_DATATYPE long integer_value; // поле для хранения целочисленного значения double double_value; // поле для хранения значения double или float string string_value; // поле для хранения значения строкового типа };
И пример заполнения массива структур MqlParam для iMACD:
//--- заполним структуру значениями параметров индикатора MqlParam pars[4]; //--- быстрый период pars[0].type=TYPE_INT; pars[0].integer_value=fast_ema_period; //--- медленный период pars[1].type=TYPE_INT; pars[1].integer_value=slow_ema_period; //--- период усреднения разницы между быстрой и медленной средними pars[2].type=TYPE_INT; pars[2].integer_value=signal_period; //--- тип цены pars[3].type=TYPE_INT; pars[3].integer_value=applied_price; handle=IndicatorCreate(name,period,IND_MACD,4,pars);
Возможно ли такое, при том, что эти параметры могут быть из разных встроенных MQL5 типов (int, double, bool, ENUM_...).
Возможно. И не только из встроенных, но и кастомных типов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования