你不能这样做,因为周期的值不会增加1,你必须组织你自己的枚举索引,像这样
int TF(int i) { switch(i) { case 1: return(PERIOD_M1); case 2: return(PERIOD_M5); case 3: return(PERIOD_M15); case 4: return(PERIOD_M30); case 5: return(PERIOD_H1); case 6: return(PERIOD_H4); case 7: return(PERIOD_D1); case 8: return(PERIOD_W1); case 9: return(PERIOD_MN1); } }
sergey1294:
这是不可能的,因为周期值不是以1递增的,你必须组织你自己的枚举索引,像这样
如果有这么简单就好了。这些数值的分布并不均匀。假设PERIOD_H1是60,下一个周期PERIOD_H2 是120。
这是不可能的,因为周期值不是以1递增的,你必须组织你自己的枚举索引,像这样

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
- www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
Interesting:
没错,这就是我在MT4中的做法
大概有两个函数需要输入。1 - 返回枚举中元素的数量,2 - 按编号返回元素...
一般来说,有一个解决方案。为每个枚举写一个特殊的Enumerator函数。例如,对于时间框架。
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i);
现在我们来估计一下有多少个枚举,以及应该有多少个枚举器函数(每个枚举一个)。
C-4:
一般来说,有一个解决方案。为每个枚举写一个特殊的Enumerator函数。例如,对于Timeframes:现在让我们估计一下总共有多少个枚举,然后应该有多少个Enumerator函数(每个枚举一个)。
MT5中共有21个时间框架。最后的版本将看起来像这样一般来说,有一个解决方案。为每个枚举写一个特殊的Enumerator函数。例如,对于Timeframes:现在让我们估计一下总共有多少个枚举,然后应该有多少个Enumerator函数(每个枚举一个)。
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i) { switch(i) { case 0 return(PERIOD_M1); case 1 return(PERIOD_M2); case 2 return(PERIOD_M3); case 3 return(PERIOD_M4); case 4 return(PERIOD_M5); case 5 return(PERIOD_M6); case 6 return(PERIOD_M10); case 7 return(PERIOD_M12); case 8 return(PERIOD_M15); case 9 return(PERIOD_M20); case 10 return(PERIOD_M30); case 11 return(PERIOD_H1); case 12 return(PERIOD_H2); case 13 return(PERIOD_H3); case 14 return(PERIOD_H4); case 15 return(PERIOD_H6); case 16 return(PERIOD_H8); case 17 return(PERIOD_H12); case 18 return(PERIOD_D1); case 19 return(PERIOD_W1); case 20 return(PERIOD_MN1); } return(-1); }
sergey1294:
MT5中共有21个时间框架。最后的变体将看起来像这样
现在我们必须对其他标准分母(标识符)做同样的工作+如果有一些自定义的东西不要忘记...
MT5中共有21个时间框架。最后的变体将看起来像这样
另一个选择是将时间框架值写 进一个数组,并通过数组,获得所需的值。

Документация по MQL5: Предопределенные переменные / _Period
- www.mql5.com
Предопределенные переменные / _Period - Документация по MQL5
一般来说,枚举有两种选择
第一次使用函数,我忘了在我的上一篇文章中加一个冒号
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i) { switch(i) { case 0: return(PERIOD_M1); case 1: return(PERIOD_M2); case 2: return(PERIOD_M3); case 3: return(PERIOD_M4); case 4: return(PERIOD_M5); case 5: return(PERIOD_M6); case 6: return(PERIOD_M10); case 7: return(PERIOD_M12); case 8: return(PERIOD_M15); case 9: return(PERIOD_M20); case 10: return(PERIOD_M30); case 11: return(PERIOD_H1); case 12: return(PERIOD_H2); case 13: return(PERIOD_H3); case 14: return(PERIOD_H4); case 15: return(PERIOD_H6); case 16: return(PERIOD_H8); case 17: return(PERIOD_H12); case 18: return(PERIOD_D1); case 19: return(PERIOD_W1); case 20: return(PERIOD_MN1); } return(-1); }第二种方法是使用一个数组
ENUM_TIMEFRAMES GetPeriodEnumerator[21]= { PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6, PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30, PERIOD_H1, PERIOD_H2, PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12, PERIOD_D1, PERIOD_W1, PERIOD_MN1 };
比方说,我们有一个枚举。我们怎样才能逐一获得这个枚举的所有可能值,例如在一个循环中?
ENUM_TIMEFRAMES tf1;
即tf1++必须依次返回PERIOD_M1, PERIOD_M2, PERIOD_M5...。我认为这不能用语言工具来完成。