Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
我会知道的)然后黑掉
我正在将一个程序从MQL4 转移到MQL5。
我遇到了这个错误。
在m30以下的时间段,Period()值是正确的。
2019.05.22 17:45:38.628 TestStat (GBPUSD,M15) 4854 Period()=15
2019.05.22 17:46:08.267 TestStat (GBPUSD,M30) 4854 Period()=30
从时间框架H1中,我得到了无法理解的数值。
2019.05.22 17:31:07.446 TestStat (GBPUSD,H1) 4854 Period()=16385
2019.05.22 17:46:39.362 TestStat (GBPUSD,H4) 4854 Period()=16388
2019.05.22 17:46:55.552 TestStat (GBPUSD,D1) 4854 Period()=16408
2019年5月21日的终端版本build 2057。
谢谢你。
在描述中。
期间
返回当前图表的时间框架值。
ENUM_TIMEFRAMESPeriod()。
返回的值
_Period 变量的内容,持有当前图表的时间框架值。值可以是 ENUM_TIMEFRAMES的一个 枚举值。
另见
PeriodSeconds,图表周期,日期和时间, ,对象可见性
=================
这一点做得不是很好。它应该正确地写在描述中。你不应该在论坛上寻找问题的根源。
事实证明,Period()不会给出当前时间框架的值,因为它说:该值可以是 枚举 ENUM_TIMEFRAMES中的一个值 。
这完全是另一回事。
请为开发者纠正语言描述。
我们在ArrayResize capacity MT5(build 2057)上有如下结果。
结果。
描述。
_Period 变量的内容,它存储了当前图表的时间框架值。该值可以是 ENUM_TIMEFRAMES枚举 中的一个值 。
这一点做得很不好。它应该正确地写在描述中。你不应该在论坛上寻找问题的根源。
因此,没有任何地方写明这个值等于以分钟为单位的周期(就像在quad中那样)。
https://www.mql5.com/ru/articles/81
这就是链接文章的开始。
所以没有任何地方说这个值等于以分钟为单位的周期(因为它是以四为单位的)。
https://www.mql5.com/ru/articles/81
链接上的文章就是从这里开始的。
有一个语言的描述说:Value可以是 ENUM_TIMEFRAMES 枚举的 一个值 。
见下文的语言描述。
图表时期
所有预定义的图表周期都有唯一的标识符。PERIOD_CURRENT标识符指的是图表的当前周期,在该周期,mql5程序正在运行。
enum_timeframes
识别器
描述
PERIOD_CURRENT
本期
PERIOD_M1
1分钟
PERIOD_M2
2分钟
PERIOD_M3
3分钟
PERIOD_M4
4分钟
PERIOD_M5
5分钟
PERIOD_M6
6分钟
PERIOD_M10
10分钟
PERIOD_M12
12分钟
PERIOD_M15
15分钟
PERIOD_M20
20分钟
PERIOD_M30
30分钟
PERIOD_H1
1小时
PERIOD_H2
2小时
PERIOD_H3
3小时
PERIOD_H4
4小时
PERIOD_H6
6小时
PERIOD_H8
8小时
PERIOD_H12
12小时
PERIOD_D1
1天
PERIOD_W1
1周
PERIOD_MN1
1个月
======================
而且描述中没有任何地方说这个值是以秒为单位的。
描述应该说明一切。
而当你不得不查找其他一些文章时,这就太糟糕了。
再次感谢TheXpert 提供的代码。
我们在ArrayResize capacity MT5(build 2057)上有如下结果。
1.第一个ArrayResize非常重要,它真正分配内存时考虑到了size+reserved_size并设置了容量。
2.所有后续的ArrayResize的执行都有一个新的reserved_size值,分别对分配的内存和容量的数量没有影响。
3 新的内存分配只有在超过容量时才会进行,在这种情况下,size+reserved_size被再次用来确定分配的内存数量,并设置新的容量。
4.reserved_size < 0的值将保留的内存释放到大小。
而且描述中没有任何地方说这个值是以秒为单位的。
所以它不是在几秒钟内...
有一个语言描述说:Value可以是 ENUM_TIMEFRAMES 的一个 枚举 值。
见语言描述中的进一步说明。
图表时期
所有预定义的图表周期都有唯一的标识符。PERIOD_CURRENT标识符指的是图表的当前周期,在该周期,mql5-程序正在运行。
enum_timeframes
======================
而且描述中没有任何地方说这个值是以秒为单位的。
描述应该说明一切。
而当你不得不去看其他一些文章时,那就太糟糕了。
谁告诉你这些是以秒为单位的数值?
有一个语言描述说:Value可以是 枚举 ENUM_TIMEFRAMES 的 一个值 。
见语言描述中的进一步说明。
图表时期
所有预定义的图表周期都有唯一的标识符。PERIOD_CURRENT标识符表示图表的当前周期,在该周期,mql5程序正在运行。
enum_timeframes
识别器
描述
PERIOD_CURRENT
本期
PERIOD_M1
1分钟
PERIOD_M2
2分钟
PERIOD_M3
3分钟
PERIOD_M4
4分钟
PERIOD_M5
5分钟
PERIOD_M6
6分钟
PERIOD_M10
10分钟
PERIOD_M12
12分钟
PERIOD_M15
15分钟
PERIOD_M20
20分钟
PERIOD_M30
30分钟
PERIOD_H1
1小时
PERIOD_H2
2小时
PERIOD_H3
3 小时
PERIOD_H4
4 小时
PERIOD_H6
6 小时
PERIOD_H8
8 小时
PERIOD_H12
12小时
PERIOD_D1
1天
PERIOD_W1
1周
PERIOD_MN1
1个月
======================
而且描述中没有任何地方说这个值是以秒为单位的。
描述应该说明一切。
而当你不得不通过其他一些文章时,这就太糟糕了。
你永远不应该依赖一个枚举值。
使用PeriodSeconds()。