2011.06.2720:10:56 Тест (EURUSD,H1) OnInit() begin!
2011.06.2720:10:56 Тест (EURUSD,H1) Static initialized!
2011.06.2720:10:56 Тест (EURUSD,H1) OnInit() end!
在不从图表中删除EA的情况下,我们改变图表周期。
2011.06.2720:11:00 Тест (EURUSD,M30) OnInit() begin!
2011.06.2720:11:00 Тест (EURUSD,M30) OnInit() end!
小册子
你是对的。我犯了一个错误。
谢谢你的答复。
MQL5参考手册 -标准库- 组织数据的类 - CArrayObj(在网站和帮助中)。
2.内存管理机制被禁用。
在这种情况下,CArrayObj不负责 内存的释放
文件。静态变量 部分。
"......静态变量从程序执行的那一刻起就存在,并在调用专门的函数OnInit()之前 被初始化一次 。"
检查专家顾问的代码。
将EA "放置 "在图表上。
在不从图表中删除EA的情况下,我们改变图表周期。
它应该像这样工作吗?
实际上,我把文档中的信息理解为在任何一次调用OnInit()函数时都会强制初始化静态变量,不管是由重新编译还是符号的变化或其他原因造成的...
事实证明,我错了。请启发我:这一规则的例外情况是什么?
当输入参数被改变时,还是一样的 "混乱"。
然而,当账户被改变时,它被正确处理--静态变量被重新初始化。
我想知道如何在不删除专家(REASON_CHARTCHANGE)的情况下改变图表符号?
文件。静态变量 部分。
"......静态变量从程序执行的那一刻起就存在,并在调用专门的函数OnInit()之前 被初始化一次 。"
检查专家顾问的代码。
将EA "放置 "在图表上。
在不从图表中删除EA的情况下,我们改变图表周期。
它应该像这样工作吗?
是的,它应该工作。
程序(其代码)已经被加载过一次,只进行了一次热的重新初始化(Deinit/Init,没有代码卸载)。在这种情况下,开发者自己必须照顾到环境的正确初始化。
是的,它应该这样工作。
程序(它的代码)已经被加载过一次,只是做了一次热的重新初始化(Deinit/Init,没有代码卸载)。在这种情况下,开发者必须关注环境的正确初始化。
首先,你的评论显然与文档中的定义相矛盾:在调用OnInit()之前先初始化一次。那么你应该在文档中明确说明这个定义:"......在调用OnInit()之前初始化一次。 首先 调用OnInit()"。
其次,你的评论显然与账户变更的情况相矛盾,在这种情况下,MT显然会强行终止专家顾问,并再次恢复。
关于静态变量 是否应该在每次(而不仅仅是第一次)调用OnInit()时被强制重新初始化的基本问题,可以提出来考虑/表决吗?
一般来说,事情的发展很有趣。
乍一看,我以为OnDenit函数是一种析构器,而OnInit是专家顾问的构造器。
事实上,事实证明,OnInit是一个多重事件(在专家的生命周期内)。那么不清楚的是,如果我们知道EA不会终止其操作(例如,在改变图表周期的情况下),为什么我们需要明确地生成OnDenit事件?
还有一个问题。
REASON_CHARTCHANGE去初始化的原因 是图表的符号或周期已经改变。
请解释如何在不删除图表上的EA的情况下改变图表符号?
还有一个问题。
取消初始化的 原因 REASON_CHARTCHANGE - 图表符号或周期已被改变。
请解释如何在不删除图表上的EA的情况下改变图表符号?
事实上,这很有趣。
根据我的直觉,我认为OnDenit函数是一种析构器,OnInit是专家顾问的构造器。
事实上,事实证明,OnInit是一个多重事件(在一个专家顾问的生命周期内)。那么不清楚的是,如果我们知道EA不会终止其操作(例如,在改变图表周期的情况下),为什么我们需要明确地生成OnDenit事件?
还有一个问题。
REASON_CHARTCHANGE去初始化的原因- 图表的符号或周期已被改变。
请解释如何在不删除图表上的EA的情况下改变图表符号?
在MT4中,一切都以同样的方式调用。而且不知道专家是否完成了它的工作(为此在OnDeinit参数中下降了,尽管可能的OnInit触发的原因也很容易知道)。
2.这很简单,在终端设置中允许专家顾问在符号和周期变化时进行交易。
然后在市场概览中选择另一个符号,用鼠标把它 "扔 "到图表上。
在任何情况下,EA在改变符号/周期后的正常初始化 "不会被删除"(它将 "热重启",正如Renat在下面所说)。 如果我们从一个简单的层面来看,专家顾问将被允许在某些终端设置下进行交易。
图表SetSymbolPeriod()
首先,你的评论明显与文档中的定义相矛盾:它们在调用OnInit()之前被初始化一次。那么你应该在文档中明确说明这个定义:"......在调用OnInit()之前初始化一次。 首先 OnInit()调用"。
其次,你的评论明显与账户变更的情况相矛盾,在这种情况下,MT显然是强行终止了EA,并再次恢复。
我们是否可以引入/表决一个基本问题,即在每次(而不仅仅是第一次)调用OnInit()时强制重新初始化静态变量 的必要性?