关于MQL4的问题。 - 页 8

 
图6
附加的文件:
zigtester.jpg  16 kb
 
ANK:
谁知道这是否正确?
一个文件不能在代码中包含多于一次。
所以它必须是。
- 或者用不同的全局变量和函数名称制作几个文件(这是个更蹩脚的版本=)。
- 或设计逻辑,以便在从不同的函数调用时没有重叠(这可能需要一些工作,但这是一个很好的解决方案;)。

如果没有例子、错误描述或完整的代码(最好是),你就不能说得更确切一些=)。
 
专家顾问和循环脚本同时在窗口中运行。
当专家顾问在等待服务器响应交易操作时,是否可以这样认为?
脚本继续照常工作,没有任何停顿和延迟,执行其计算(不是交易操作)?
 
SKif:
专家顾问和循环脚本同时在窗口中运行。
当专家顾问在等待服务器对交易操作作出反应时,是否可以这样认为?
脚本继续运行,没有任何停止和延迟,执行其计算(不是交易操作)?
是的。
专家顾问和脚本都在各自的线程中工作。
 
好的,谢谢你。
当打开EA按钮时,指标和EA的启动时间不一致,我们是否应该认为这是正常的?
也许我误解了什么或做错了什么,但事实证明,时间差可能超过250ms。

还有一件事。EA按钮的状态 对指标的操作是否有影响?
是否可以从指标中跟踪这个按钮的状态?
 
我做了一点研究...

我在窗口放了一个指标。
int start() { GlobalVariableSet(GV_Tick, 1); return; }

在窗口放置了一个EA。
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

还有一个像这样的片段的脚本。
... T_Tick=0; T_Knopka=0; while (Tick==0 || Knopka==0 ) // Ждём тика и разреш. кнопки советн. { Tick = 0; Knopka = 0; Tick = GlobalVariableGet(GV_Tick ); Knopka = GlobalVariableGet(GV_Knopka ); if (Tick>0 && T_Tick==0)T_Tick=GetTickCount(); if (Knopka>0) { T_Knopka=GetTickCount(); Alert("T_Tick=",T_Tick, " T_Knopka=",T_Knopka, " Запазд= ",T_Knopka-T_Tick); } } ... GlobalVariableSet(GV_Knopka, 0 ); // Обнуляем прошлые события GlobalVariableSet(GV_Tick, 0 ); // Обнуляем прошлые события


下面是结果。
在红色标示的期间,鼠标只是以每秒3转的速度在直径为50mm的圆圈内移动。
对终端没有影响。

事实证明,在一个 "正常 "的安静期,滞后期大约是。20-60毫秒,而在用户与终端接触的期间甚至更多。
此外,我发现指标的start()是在窗口大小调整期间和窗口之间切换时启动的。
---------------
我主要对这种延迟的合法性感兴趣,"正常 "和 "不正常"。
而且我想从开发商那里得到一些意见--它与本意有多合适。
附加的文件:
1.png  21 kb
 
我将亲自进行测试,并将结果报告给大家。
 
好的。
在没有任何其他选择的情况下,我以测量EA和指标信号的滞后时间为指导,以判断EA按钮是否被关闭。这段时间应该是很短的。但它变化太大。

这非常有趣,你会发现什么。
(一般来说,我需要这整个厨房来回答一个简单的问题:EA按钮的状态)。
 
专家在自己的线程中工作,独立于其他任务。
事实证明,CPU负载是由鼠标移动引起的,当数百个鼠标移动命令被集体发送时。 在这些 "鼠标 "命令中也有刷新EA的命令,这导致了延迟。
 
那么,我们应该认为,脚本、指标和专家顾问的非同步操作是一种普遍现象?
那么......一个人如何生活在这个世界上呢?