Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
这里我有一个实际问题。
为什么每次调用 CopyBuffer() 时都要检查指标句柄是否残缺?在我的 EA 中,我曾执行过一次该程序(在检查数据同步 后,随着第一个刻度线的到来),后来我开始收到错误4807: 指标句柄出错。 CSymTotal=7。收到的句柄是一个数组:
打印检查显示,所有七个 H_Ind[0.6]的值分别为 10...15,即不同于-1。句柄似乎有效,但在响应 CopyBuffer(H_Ind[0-6]...) 时,我得到 CopyBuffer=-1,LastError=4807(!!!)。有时正常,有时出错。在我按照本文介绍的方法进行检查后, 目前一切正常、
目前一切正常。神秘...
我不明白我到底犯了什么错....。最重要的是,为什么每次使用 CopyBuffer() 并再次创建句柄时 都要检查句柄的有效性?难道不是一直保存到智能交易系统完成工作为止吗?是一般情况下必须这样做,还是只是为了示例方便?
这里我有一个实际问题。
为什么每次调用 CopyBuffer() 时都要检查指标句柄是否残缺?在我的 EA 中,我曾执行过一次该程序(在检查数据同步 后,随着第一个刻度线的到来),后来我开始收到错误4807: 指标句柄出错。 CSymTotal=7。收到的句柄是一个数组:
打印检查显示,所有七个 H_Ind[0.6]的值分别为 10...15,即不同于-1。句柄似乎有效,但在响应 CopyBuffer(H_Ind[0-6]...) 时,我得到 CopyBuffer=-1,LastError=4807(!!!)。有时正常,有时出错。在我按照本文介绍的方法进行检查后, 目前一切正常、
目前一切正常。神秘...
我不明白我到底犯了什么错....。最重要的是,为什么每次使用 CopyBuffer() 并再次创建句柄时 都要检查句柄的有效性?难道不是一直保存到智能交易系统完成工作为止吗?这到底是必要的,还是只是为了示例方便?
一般来说,这个问题的表述应该更宽泛一些:
在CopyBuffer() 之前和之后,应引入哪些检查、条件或延迟,以确保在最高速度条件下(在一个循环中)在七个(十个)仪器上获得我现在需要的 400(0) 指标值?
因为,return(0) = "啊,好吧,现在不行,也许下次能行......"。
在这里,顺便说一下,Copy 的其余部分就在它旁边......
PS.也许已经离题了。好吧,这个问题不是问作者的,而是问每一个能说明问题的人......
在我的示例中,条件是这样的:如果句柄有效,我们继续复制数据。如果无效,我们重新创建指标并退出该函数,因为指标的计算 需要时间。复制也是一样,在复制过程中,指标可能会重新计算,所以CopyBuffer()返回-1,一旦数据准备就绪,函数就会执行其工作,这就是 为什么有必要检查这一切。
是的,谢尔盖,我明白了。我无意对这篇文章或作者造成任何影响。这篇文章非常出色。这不是抱怨,而是试图找到答案。这只是我找到的最接近这一主题的讨论。你想知道更准确的答案,不是吗?)
也许我们应该把它放在一个单独的主题里?
也许可以把它放在一个单独的主题中?
https://www.mql5.com/ru/forum/1880。
在这里,把它放在主题中。谢尔盖,我为超出文章范围而道歉。我会很高兴的......) ))
希望有人能给出 20 种理财 方法 !!!!!!
这篇文章的想法非常好。但你忘记了 OOP 和一般编程的概念:简明。在你的函数中,有硬编码的指标、当前符号、当前周期、指标参数。想法是好的,但没有完全实现,离完美还差得很远。例如--我想检查指标线 的交叉情况,每条线 都来自不同的时间框架和不同的符号--这是其一。其二,如果终端暂时失去了与服务器的连接,错过了您正在处理的三个条形图,您的功能会发生什么情况?有信号,但错过了输入。应使用 CHARGE 搜索信号。然后检查信号是否已被处理。可能会有很多交叉点,您自己也会感到惊讶。只需将参数(指标编号、符号、时间范围、搜索开始时间、搜索结束时间、指标线......)传递给函数即可。- 这样,您的系统就会变得更加灵活,而 Expert Advisor 也能看到人类无法看到的东西--不同符号和不同时间框架的交叉线。这比这里给出的功能要好得多。您还需要弄清变量命名的概念--您的变量太少,而且名称毫无意义--但这是另一个话题。这就是所谓的编程风格。每个人都有自己的风格。但我发现您正在慢慢接近我在 MT4 中尝试使用的概念,这非常令人鼓舞。
这篇文章的想法非常好。但你忘了 OOP 和一般编程的概念:简明。在你的函数中,有硬编码的指标、当前符号、当前周期、指标参数。想法是好的,但没有完全实现,离完美还差得很远。例如--我想检查指标线 的交叉情况,每条线 都来自不同的时间框架和不同的符号--这是其一。其二,如果终端暂时失去了与服务器的连接,错过了您正在处理的三个条形图,您的功能会发生什么情况?有信号,但错过了输入。应使用 CHARGE 搜索信号。然后检查信号是否已被处理。可能会有很多交叉点,您自己也会感到惊讶。只需将参数(指标编号、符号、时间范围、搜索开始时间、搜索结束时间、指标线......)传递给函数即可。- 这样,您的系统就会变得更加灵活,而 Expert Advisor 也能看到人类无法看到的东西--不同符号和不同时间框架的交叉线。这比这里给出的功能要好得多。您还需要弄清变量命名的概念--您的变量太少,而且名称毫无意义--但这是另一个话题。这就是所谓的编程风格。每个人都有自己的风格。但我发现他们正在慢慢接近我在 MT4 中尝试使用的概念,这非常令人鼓舞。