Вроде уже не не 1-е апреля.
А причем здесь 1-е апреля?
Я реально не знаю как получить следующее/предыдущее значение из перечисления - это вообще возможно?
Могу создать массив переменных со значением из типа перечисления и перебирать их. Но мы же не ищем легких путей.
Могу создать массив переменных со значением из типа перечисления и перебирать их. Но мы же не ищем легких путей.
А что есть другие варианты ?
У меня прямо сделана функция GetNextTimeframe(), в которой через switch() выдается более высокий таймфрейм. В качестве бонуса - имею не просто следующий таймфрейм (в МТ5 их довольно много), а "наиболее удобный следующий" (который сам считаю удобным)
например
ENUM_TIMEFRAMES x = PERIOD_H1;
как получить в переменной x значение PERIOD_M30, PERIOD_H4, PERIOD_D1 ?
p зависит от задачи как вы это хотите это использовать, вариантов реализации может быть множество.
p зависит от задачи как вы это хотите это использовать, вариантов реализации может быть множество.
назовите хоть один без массива или простого перебора типа:
ENUM_TIMEFRAMES GetNextTimeframe(ENUM_TIMEFRAMES x) {
switch (x) {
case PERIOD_M30: return(PERIOD_H1);
case PERIOD_H1: return(PERIOD_H4);
}
return(x);
}
Для топикстартера - кстати, есть функция EnumToString. Думаю, пригодится в ваших разработках.
Для топикстартера - кстати, есть функция EnumToString. Думаю, пригодится в ваших разработках.
назовите хоть один без массива или простого перебора типа:
ENUM_TIMEFRAMES GetNextTimeframe(ENUM_TIMEFRAMES x) {
switch (x) {
case PERIOD_M30: return(PERIOD_H1);
case PERIOD_H1: return(PERIOD_H4);
}
return(x);
}
А чем вариант с массивом не подходит? Создаёте массив и сразу инициализируете его всеми доступными таймфреймами. Порядок расположения не важен - так как такой массив отлично сортируется.
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property script_show_inputs ENUM_TIMEFRAMES x[5]={PERIOD_M10,PERIOD_H3,PERIOD_M2,PERIOD_H1,PERIOD_H6}; //+------------------------------------------------------------------+ //| Start | //+------------------------------------------------------------------+ void OnStart() { for(int i=0;i<ArraySize(x);i++) PrintPeriod(x[i]); Print("ArraySort"); ArraySort(x); for(int i=0;i<ArraySize(x);i++) PrintPeriod(x[i]); } //+------------------------------------------------------------------+ void PrintPeriod(const ENUM_TIMEFRAMES &period) { Print(period); } //+------------------------------------------------------------------+
А чем вариант с массивом не подходит? Создаёте массив и сразу инициализируете его всеми доступными таймфреймами. Порядок расположения не важен - так как такой массив отлично сортируется.
Вариант с массивом указан выше. С реализацией его понятно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
например
ENUM_TIMEFRAMES x = PERIOD_H1;
как получить в переменной x значение PERIOD_M30, PERIOD_H4, PERIOD_D1 ?