错误、漏洞、问题 - 页 342

 
Urain:

对于MQ来说,最简单的解决方案是给函数参数

数组而不是变量,后者现在作为参数存在。当然,这个解决方案是片面的,因为无论如何都没有办法在EA之间传输数据,但仍然聊胜于无。

甚至更好的是这样的东西

void SendData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])
void GetData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])

能够向特定的收件人发送并从特定的发件人处接收。而不是仅仅为了一些图表而发送。 并将手柄公开。嗯,类似这样的事情。

 

有这样一项任务:指标窗口应从专家顾问中删除并恢复。但计算出的数据保持不变。

一个简单的解决方案是创建一个用于计算数据的指标(我们称之为"计算")和一个用于在单独窗口显示数据的指标,我们称之为"绘图"Plot " 指标是由iCustom("Calculate")调用的,但Expert Advisor也是在iCustom("Calculate")之前调用的。它们以相同的参数被调用。我曾在某处提到,两个具有相同参数的指标不会在一个图表中创建,它们会创建额外的句柄,指的是已经启动的指标进程的主句柄

因此,问题是:当Plot 从EA中删除并再次添加后,Plot 中启动的Calculate 指标是否会再次被计算,还是只取EA中启动的Calculate 指标的计算数据?

 
Urain:

我曾在某处提到,在一个图表中不会创建两个参数相同的指标,而只是创建一个额外的句柄,这个句柄是指已经运行的指标进程的主句柄

MQL5参考指南 /技术指标/用于处理技术指标的功能

"所有的功能,如iMA、iAC、iMACD、iIchimoku等,在客户终端的全局缓存中创建相应技术指标的副本 如果带有这些参数的指标副本已经存在,则不创建新的副本,但对该副本的引用计数器将被递增。

这些函数返回相应指标副本的句柄。使用这个句柄,你可以随后检索由相应指标计算的数据..."

"注意。在一个mql5程序中多次调用相同参数的指示器函数不会多次增加参考计数器,计数器只会增加一次,即1. .."。

 
Yedelkin:

MQL5参考指南/技术指标/用于处理技术指标的功能

...

"注意在一个mql5程序中以 相同的参数多次访问指示器功能不会导致指示器计数器的多次增加,计数器将只增加一次1..."。

是的,这正是它。谢谢你的提示。

我不完全理解这句话。是否可以将专家顾问中启动的指标视为一个程序,还是说它应该是两个程序?

如果做出了第一个假设,那么一切都会好起来。但如果编译器将它们视为不同的程序,那就有问题了。

 
Urain:

在EA中运行的指标能否被视为一个方案,还是说它是两个方案?

1.手册说:"所有的功能,如iMA、iAC、iMACD、iIchimoku等,在客户终端的全局缓存中创建一个 相应的技术指标 副本

我的理解是(指你的问题):"所有的功能,如iMA, iAC, iMACD, iIchimoku 都是从一个特定的mql5-程序中调用的,并在客户终端的全局缓存中创建一个相应的技术指标的副本。"因此,常见的"EA E运行指标I " 意味着EA E调用函数I,在客户终端全局缓存中创建一个指标副本,并使EA E收到该副本的句柄。

2.如果 "EA E调用指标函数I",那么意味着它 "在一个mql5程序内 "调用指标函数。

 
我从这里下载了420的构建https://www.mql5.com/ru/forum/23/page11,但它实际上安装了412。是我出了问题,还是他们忘记了修改metaquotes.net 文件?
Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:.
 
Yedelkin:

1.参考手册》说:"所有的功能,如iMA、iAC、iMACD、iIchimoku等,在客户终端的全局缓存中创建一个 相关技术指标的 副本"。

我的理解是(指你的问题):"所有的功能,如iMA, iAC, iMACD, iIchimoku 都是从一个特定的mql5-程序中调用的,并 在客户终端的全局缓存中创建一个相应的技术指标的副本。"因此,常见的"EA E运行指标I " 意味着EA E调用函数I,在客户终端全局缓存中创建一个指标副本,并使EA E收到该副本的句柄。

2) 如果 "EA E调用指标函数I",那么我们谈论的是 "在一个单一的mql5程序中 "调用指标函数。

我知道了。这里的关键短语是"在客户终端的全局高速缓存中"。

如果是这样,那就一切正常了。还有一个问题得到了澄清。

 
a483483:
我从这里下载了420的构建https://www.mql5.com/ru/forum/23/page11,但实际上它安装的是412的构建。我有一个问题,或在metaquotes.net 文件中忘记改变?

所以请等待,它应该自行更新到最新版本。

SZS只要让终端运行,管好自己的事,过一段时间你就会在终端上看到下载了这样那样的版本,并要求重启终端。

 

下午好!

在升级到420版本后,我开始测试我的EA,发现它由于某种原因开始 "丢失"。我分析了我的交易,发现止损是在不存在的价格上触发的。例如,我在欧元兑美元上设置了1.06520的止损,但它是有效的,尽管最大的价格 是1.05920。当我进一步看时,我看到很多这样的交易。获利是通过同样的原则触发的(在不存在的价格)--三角洲是相同的--600点。在图表上的测试器中,上下箭头 "挂 "在空中,离条状物很远。

附上一张截图。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
附加的文件:
eurusd.jpg  235 kb
 
Kairoser:

下午好!

在升级到420版本后,我开始测试我的EA,发现它由于某种原因开始 "丢失"。我分析了我的交易,发现止损是在不存在的价格上触发的。例如,我在欧元兑美元上设置了1.06520的止损,但它是有效的,尽管最大的价格 是1.05920。当我进一步看时,我看到很多这样的交易。获利是通过同样的原则触发的(在不存在的价格)--三角洲是相同的--600点。在图表上的测试器中,上下箭头 "挂 "在空中,离条状物很远。

附上一张截图。

尝试在MQ服务器上测试你的EA。Alpari可能仍有历史数据不正确的老问题。