OE 0 Tester 15:35:25 Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from2010.08.0100:00 to 2010.08.0900:00 CH 0 Tester 15:35:25 complete optimization started
LO 0 Core 115:35:25 agent process started
HK 0 Core 115:35:25 connecting to 127.0.0.1:3000
OK 0 Core 215:35:25 agent process started
DO 0 Core 215:35:25 connecting to 127.0.0.1:3001
DG 0 Core 215:35:26 connected
EK 0 Core 115:35:26 connected
NQ 0 Core 115:35:26 authorized (agent build 384)
QK 0 Core 215:35:26 authorized (agent build 384)
DI 0 Core 115:35:26 pass 0 started
LM 0 Core 215:35:26 pass 1 started
QK 0 Core 115:35:27 common synchronization completed
FD 0 Core 215:35:27 common synchronization completed
GR 0 Core 215:36:08 pass 1 returned result 10000.00in42 sec
RH 0 Core 215:36:08 pass 2 started
ON 0 Core 115:36:09 pass 0 returned result 10000.00in43 sec
ID 0 Core 115:36:09 pass 3 started
GK 0 Core 215:36:21 pass 2 returned result 10000.00in13 sec
QQ 0 Core 215:36:21 pass 4 started
PH 0 Core 115:36:21 pass 3 returned result 10000.00in12 sec
IR 0 Core 115:36:21 pass 5 started
ED 0 Core 215:36:34 pass 4 returned result 10000.00in13 sec
ON 0 Core 215:36:34 pass 6 started
MQ 0 Core 115:36:34 pass 5 returned result 10000.00in13 sec
GK 0 Core 115:36:34 pass 7 started
KN 0 Core 215:36:46 pass 6 returned result 10000.00in12 sec
ND 0 Core 215:36:46 pass 8 started
CJ 0 Core 115:36:47 pass 7 returned result 10000.00in13 sec
EP 0 Core 115:36:47 pass 9 started
PG 0 Core 215:36:59 pass 8 returned result 10000.00in13 sec
QO 0 Core 115:36:59 pass 9 returned result 10000.00in12 sec
MD 0 Tester 15:36:59 optimization finished, total passes 10
HS 0 Tester 15:36:59 optimization passed in1 minutes 34 seconds
CE 0 Core 115:36:59 connect closed
PI 0 Core 215:36:59 connect closed
ON 1 Tester 15:37:20 genetics turned off because 10 passes, to use genetics increase amount of optimized parameters
RQ 0 Tester 15:37:20 Experts\Ye00-01-0 Event.ex5 on EURGBP,M1 from2010.08.0100:00 to 2010.08.0900:00 FL 0 Tester 15:37:20 complete optimization started
QM 0 Core 115:37:20 connecting to 127.0.0.1:3000
MG 0 Core 215:37:20 connecting to 127.0.0.1:3001
MN 0 Core 115:37:20 connected
LR 0 Core 215:37:20 connected
FH 0 Core 115:37:20 authorized (agent build 384)
QR 0 Core 215:37:20 authorized (agent build 384)
DF 0 Core 115:37:20 pass 0 started
LJ 0 Core 215:37:20 pass 1 started
JR 0 Core 115:37:20 common synchronization completed
EK 0 Core 215:37:20 common synchronization completed
IK 0 Core 115:38:35 pass 0 returned result 10000.00in75 sec
KQ 0 Core 115:38:35 pass 2 started
QG 0 Core 215:38:36 pass 1 returned result 10000.00in76 sec
FM 0 Core 215:38:36 pass 3 started
JD 0 Core 115:39:16 pass 2 returned result 10000.00in41 sec
MN 0 Core 115:39:16 pass 4 started
QP 0 Core 215:39:17 pass 3 returned result 10000.00in41 sec
FJ 0 Core 215:39:17 pass 5 started
KM 0 Core 115:39:56 pass 4 returned result 10000.00in40 sec
CG 0 Core 115:39:56 pass 6 started
DJ 0 Core 215:39:57 pass 5 returned result 10000.00in40 sec
LP 0 Core 215:39:57 pass 7 started
IF 0 Core 115:40:37 pass 6 returned result 10000.00in41 sec
FL 0 Core 115:40:37 pass 8 started
DS 0 Core 215:40:38 pass 7 returned result 10000.00in41 sec
GI 0 Core 215:40:38 pass 9 started
KP 0 Core 115:41:18 pass 8 returned result 10000.00in41 sec
NH 0 Core 215:41:19 pass 9 returned result 10000.00in41 sec
MS 0 Tester 15:41:19 optimization finished, total passes 10
OJ 0 Tester 15:41:19 optimization passed in3 minutes 59 seconds
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);
if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
}
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);
if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
}
Yedelkin:
解释一下。如果一个专家顾问不处理它附加在图表上的符号的ticks,这个符号的NewTick 事件的连续产生将导致这个EA处理的事件队列溢出。
你是什么意思?
专家顾问中没有OnTick(),但NewTick事件 却成为队列?
你怎么知道什么分析了队列?)
如果有必要的话,找不到禁用图表上附有专家顾问的符号的刻度流(NewTick 事件)的方法。
我觉得我从星期天一直工作到星期五,没有任何休息......。:))
你是什么意思?
你怎么会知道......?
我以两种方式学会了它。首先,我熟悉了EventChartCustom - OnChartEvent的组合,以一个简单的专家顾问为例,从外国符号收集指标信号。同时,专家顾问并不与自己的符号的ticks一起工作,专家顾问代码中的Ontick()函数被注释掉。当在测试器中运行该EA时,我发现行驶时间因EA所连接的符号不同而不同。例如,请看下面的例子。在相同的优化参数下,通过时间明显不同。
专家顾问没有OnTick(),而NewTick事件 是排队的?
为了检查这个问题的答案(第二种方法),我以下列方式修改了专家顾问的代码
也就是说,我插入了一条黄色背景的线,以检测符号收到的新刻度线的事实。结果显示,专家顾问所连接的符号的ticks被定期接收。好吧,既然手册上说 "NewTick 事件产生于 当一个符号收到一个新的tick时,专家顾问被连接到的图表上。",收到新刻度线的事实应该导致NewTick 事件的产生。
从你的问题来看,你认为当OnTick()被禁用时,不会产生NewTick 事件?但我在手册中没有找到这样的信息。
感觉你从周日工作到周五,没有休息......。:))
也就是说,我插入了一条用黄色背景突出显示的线,以检测新刻度线的事实,通过符号来检测。从结果中你可以看到,由
鉴定师所连接的符号,会定期收到。
你有没有检查过在你调用自定义事件之前,哪个事件会导致OnChartEvent 被调用?
-------------
如果
你把一个简单的EA放进去,让它在测试器中运行,它不会激活。
你有其他调用OnChartEvent的函数吗?
你是否有其他调用OnChartEvent的函数。
是的,当然了。由于Expert Advisor使用EventChartCustom - OnChartEvent绑定从第三方符号收集指标信号,每个这样的指标都有自己的EventChartCustom()函数 实例。EventChartCustom()函数的每个实例的第一个参数包含一个图表标识符,我们的EA与之相连;第二个参数为零。
如果在任何专家顾问中插入,它将不会被激活。
这只是代码的一部分,--来自专家顾问,从其他符号中收集指标信号。如果没有指标,这部分代码(OnChartEvent 函数)将不会因为没有指标而处理自定义事件。
在调用自定义事件之前,你是否检查过哪个事件导致OnChartEvent被调用?
不,有点错。我想看看,当OnChartEvent()函数处理来自其他符号的指标的自定义事件时,符号是否接收到了专家顾问所连接的图表的ticks。可以看出,收到的是欧元兑英镑的点子。根据参考资料,我得出结论,当符号出现新的点数时,会产生 NewTick 事件。
不可能弄清楚你使用的哪个函数导致了不同的计时结果。没有完整的代码,就只能靠咖啡渣猜测。
NewTick与OnChartEvent 没有任何直接 关系。这就是为什么你建议的队列跟踪机制是相当人为的。我不确定这是否正确。
在这种情况下,我不会声称是NewTick创造了测试延迟。而且我认为这是你的绑定机制造成的,而不是事件本身。
不可能弄清楚你使用的哪个函数导致了不同的计时结果。没有完整的代码,就只能通过咖啡渣来猜测。
NewTick与OnChartEvent没有任何直接 关系。这就是为什么你建议的队列跟踪机制是相当人为的。我不确定这是否正确。
在这种情况下,我不会声称是NewTick创造了测试延迟。而且我认为是你的绑定机制有问题,而不是事件本身。
这件事从一开始就不是我的意思。在我的第一条信息中,我说我没有找到一种方法来禁用附在图表上的专家顾问的符号的勾选事件。你已经对这句话做出了反应,但你没有提供一种方法,在必要时禁止所需符号的流转。我的结论是,不仅是我,而且你也不知道这样的方法。所以我的建议仍然有效:引入一个切换功能,允许你以编程方式禁用事件的生成。 鏂囩歞ean 的符号,该符号在其图表上附有一个专家顾问。
至于关于 "靠猜 "和 "队列跟踪机制的人为性 "的评论--我没有提出从一开始就研究代码并寻求 "为什么会这样 "的答案。从我的建议中可以看出,我已经为自己找到了答案。但是,让我们从一个更抽象的角度来考虑这个问题,不要把注意力集中在某个特定的专家顾问的代码上。
NewTick与OnChartEvent没有任何直接 联系。
好吧,让我们假设它是。所以,NewTick与OnChartEvent是间接 相关的,但它是有联系的。我在解释 中已经说过了,但我要再重复一次。你比我更清楚,有一些 "共同的事件队列",所有发生的事件都堆积在那里,包括预定义的和用户定义的。这些事件是按照收到的顺序一个一个地处理的。由于队列有一定的规模限制,当它满了之后,旧的事件就会被删除而不被处理。是这样吗?
因此,事实证明,如果Expert Advisor没有规定处理NewTick事件,但这些事件仍然产生,那么我的一般事件队列将被不必要的NewTick事件简单地堵塞,而且会有不处理过时的用户事件的风险,这些事件必须由Expert Advisor处理。 我希望你同意这个结论。这就是我提出上述建议的原因。
当然,我不知道事件队列和NewTick事件如何工作的所有微妙之处。因此,我的一些结论可能是错误的,我将饶有兴趣地考虑任何解释。
在这种情况下,我不会声称是NewTick造成了测试延迟。而且我认为这是你的绑定机制 造成的,而不是事件本身。
供参考。专家顾问以相同的参数和相同的 "绑定机制 "将一个相同的指标实例悬挂在相邻的符号上,在一个相同的时间间隔内。绑定是相同的:EventChartCustom - OnChartEvent。
我是否正确理解,你同意 "如果专家顾问中没有OnTick(),NewTick事件 根本就不会被排队 "的说法?
为什么要猜测和编造假说?
你要求"引入一个开关函数,使你能够以编程方式禁用事件生成 "。 鏂囩歞ean为专家顾问连接到图表上的符号。"是明确的。
写信给servicedesk。
其他一切都在与风车斗争。
为什么要猜测和炮制假说?
其他都是与风车的斗争。
你不说 :)一些人习惯于盲目地工作,而另一些人则试图更多地了解要遏制的现象。假设是在缺乏这种或那种信息的情况下产生的。谢谢你参加讨论。
我写信给SD。我不知道建议可以在那里得到解决。