int OnInit()
{
...
account=AccountNumber();
...
}
voidOnTick()
{
staticbool first_run = true;
if(first_run)
{
if(account==0) { // Если терминал не успел получить данные с сервера
OnInit(); // пробуем снова всё инициализировать
return;
}
first_run = false;
}
在MT4中有这样的事情,我不知道当OnInit在账户变更后被触发时,账户号码 还没有来得及在环境中更新,还是有其他的bug,我决定计时器
如果重新加载运行着EA的终端,很多事情都会出错。
我认为,如果代码不是为测试人员编写的,那么所有的初始化最好在第一次打勾时进行--那么99.9%的东西都会被正确初始化。
如果运行中的EA的终端过载,很多事情都会出错。
我认为,如果代码不是为测试人员编写的,那么所有的初始化最好在第一次打勾时进行--那么99.9%的东西都会被正确初始化。
我同意,但可能有0.1%))
如果运行中的EA的终端过载,很多事情都会出错。
我认为,如果代码不是为测试人员编写的,那么最好是在第一次打勾时初始化所有的东西--那么99.9%的东西都会被正确初始化。
最好是在第一次打勾时进行所有的初始化 - 然后99.9%的东西都会被正确初始化...怎么样?
最好是在第一次打勾时进行所有的初始化 - 然后99.9%的东西都会被正确初始化......怎么样?
你可以直接这样做,避免使用 "我的 "类型的垫片
你可以直接通过避免 "我的 "形式的填充来做到这一点
这不是填充物,是结构化的代码。
你的例子是一个懒得多写几个字母和得到不系统的代码的例子--这里至少有2次会在运行EA时调用OnInit(),而不是事实,这将是必要的,或者说没有违反之前写的内容--你看到的问题的水平,对吗? ))
这不是一个垫子,是结构化的代码
你的例子是一个懒得多写几个字母和得到非结构化代码的例子--这里至少有2次会在启动EA时调用OnInit(),而不是有必要的事实,或者说不会破坏之前写的东西--你看到的问题的水平,对吗? ))
first_run = true;
你还需要在初始化时检查Init,也许那里已经是 "零 "了。
否则,是的,我同意。
P.S. 我不同意,如果你设法连接到服务器并从它那里获得实际数据,它就不会被调用2次。
不起作用,因为文档中写到OnTick()在指标中不起作用!这一点是很重要的。
不起作用,因为文档说OnTick()在指标中不起作用!
好吧,这就是极限 :(
将OnTick()改为
而我要去另一个分支。好吧,这就是极限 :(
我在上面写了,关于问题的水平;)
而你开始在OnTick/OnInit中寻找初始化的优化--那里的一切都比较简单,你需要保护所找到的代码与相同的朋友分享 ))))