错误、漏洞、问题 - 页 1124 1...111711181119112011211122112311241125112611271128112911301131...3184 新评论 Artem Temnikov 2014.04.12 08:40 #11231 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { struct ARGB { uchar blue; uchar green; uchar red; uchar alpha; }; struct N { uint num; }; N n={100288}; ARGB c; c=n; //так получаем предупреждение implicit struct cast sample.mq5 22 4 c=(ARGB)n; //а так всё в порядке } 尽管这两个结构的大小相同,并且相互复制没有损失,但我们仍然得到了一个警告。 TheXpert 2014.04.12 08:46 #11232 Fleder: 尽管这两个结构的大小相同,并且相互复制没有损失,但我们仍然得到了一个警告。 嗯,这很好。要做一个明确的演员并不难。但是,当错误发生时,试图弄清楚已经分配的内容并不那么令人愉快。 Artem Temnikov 2014.04.12 08:49 #11233 TheXpert: 所以这很好。要做一个明显的种姓并不难。当虫子开始爬进来的时候,弄清楚在哪里分配什么并不是很令人愉快。 看来,编译器的座右铭是:"安全比遗憾好!" Artem Temnikov 2014.04.12 09:10 #11234 从应用程序复制到SR。能够从RAM中自我卸载时间序列回到*.hc缓存中错误, MetaTrader 5 MQL, 已打开, 开始: 2014.04.12 06:04, #995430终端版本和位910 32位问题描述亲爱的开发者们,你们好!在MQL5中,一些系统函数,如CopyRates、CopyTime、CopyOpen 等,旨在接收时间序列数据。当你调用这些函数中的任何一个时,所要求的时间序列会在 "图表中的最大条数 "参数内加载到RAM。然而,各种因素的结合,如:。1.符号上有足够深的历史,或从服务器上完全加载。2.图表中的最大条数 "参数为 "无限"。3.要求提供最小的时间范围M1的数据。消耗了非常多的内存。由于运行MQL5的程序逻辑(例如,如果它是一个多货币专家顾问或一个指标),问题就更严重了。可以为交替访问几个符号的低级时间段的数据而规定(例如,单一搜索)。因此,RAM的消耗增加了许多倍。Получение данных нужного таймфрейма из промежуточных данныхHCC格式的服务文件发挥着数据源的作用,按HC格式的要求的时间框架建立价格数据。HC格式的数据是时间序列,它为快速访问做了最大的准备。它们只在图表或mql5程序的要求下创建,数量不超过 "图表中的最大条数 "参数,并被保存在扩展名为hc的文件中供进一步使用。为了节省资源,时间框架上的数据只有在需要时才会被加载并存储在RAM中。 如果长时间没有请求,数据就会从RAM中卸载,并保存到一个文件中。每个时间段的数据都是独立于其他时间段的现成数据准备的。数据准备和可用性的规则对所有的时间框架都是一样的。也就是说,尽管HCC格式的数据存储单位是分钟条,但HCC格式的数据的可用性并不意味着同体积的M1时间框架的HC格式数据的可用性和可及性。从服务器接收新的数据会自动更新 所有时间段的HC格式的已用价格数据,并重新计算所有指标,这些指标明确使用它们作为计算的输入数据。在引用的文件中,用黄色强调的过程的时间相当大:大约半小时(我的观察)。结果,所有要求的时间序列都毫无理由地 "挤 "在 "RAM "中。如果 "RAM "不是 "橡胶而 "贪婪的 "专家顾问/指标要求越来越多的时间序列,终端没有其他事情可做。除了将多余的时间序列紧急 "转储 "回文件(缓存)。因此,在这种紧急复位中,终端可能会将时间序列重置为一个 "破损的缓存",即它会丢失 "一大半 "的数据。而在下一次访问这个时间序列时,终端会将这个 "破损的缓存 "作为一个正常的缓存加载。结果,终端图表显示的所需时间序列在历史上有一个巨大的漏洞。预期的结果MQL5语言倾向于节省执行环境的资源。这方面的一个例子如下。1.ArrayFree 函数 2.ResourceFree 函数3.删除 操作员4.图表中的最大条数 " 参数有没有可能在MQL5语言功能中增加一个系统功能,强制终端在不再使用的时间序列下进行操作?如果没有打开这个时间序列的图表,在时间结束时?例如,一个函数。bool SeriesFlush( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период );这将允许。1.不担心RAM溢出。2.不要担心 "破损的缓存",你只能通过在终端关闭时手动删除*.hc文件来摆脱它。3.你不必依赖于你的操作系统的位模式和RAM的大小。4.开发软件产品时,不要使用试图绕过上述缺点的 "拐杖"。 Aleksey 2014.04.12 09:39 #11235 Fleder:从应用程序复制到SR。从RAM中自行卸载时间序列回到*.hc缓存的可能性 为什么,这是个好主意。 Denis Timoshin 2014.04.12 10:29 #11236 你能告诉我如何从一个有正偏差的指标中获取数据吗? 我对-1条的数据感兴趣? Vladimir Karputov 2014.04.12 10:45 #11237 dentraf: 你能告诉我如何获得正偏移的指标数据吗? 我对-1条的数据感兴趣?要做到这一点,你需要知道感兴趣的指标线的偏移设置。这是一个来自iAlligator 技术指标的例子//--- зададим смещение для каждой линии PlotIndexSetInteger(0,PLOT_SHIFT,jaw_shift);这是一种抵消,而不是对未来的指标计算。 Artem Temnikov 2014.04.12 10:49 #11238 从应用程序复制到SD。指示器中IsStopped系统功能的操作不正确错误, MetaTrader 5 MQL, 已打开, 开始: 2014.04.12 07:59, #995480终端版本和位模式910 32位问题描述亲爱的开发者们,你们好!在设计有大量迭代的循环时,提高代码质量的建议之一是是使用系统嵌入对MQL5程序的强制停止的验证IsStopped() 系统函数。然而,在实践中,这个检查在指标中不起作用(在脚本和专家顾问中起作用)。下面是显示问题本质的指标短代码。#property indicator_plots 0 //===================================================================== // Custom indicator initialization function //===================================================================== int OnInit() { return(INIT_SUCCEEDED); } //===================================================================== // Custom indicator iteration function //===================================================================== int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { long n=0; for(int i=0;i<1 e+10 && !IsStopped();i++) {n++;} Print("OnCalculate End"); return(rates_total); } 如果你试图从图表中删除这个指标,"计算指标 "的过程不会因此而停止。尽管它应该如此,因为要检查程序 的停止 标志。你可以通过在任务管理器中监控terminal.exe进程来轻松发现这一点。在一个四核处理器上这大约是CPU负载的25%。此外,终端负载不会随着时间的推移而减少,直到终端关闭。甚至在终端关闭后,终端.exe进程仍然挂在管理器中。而且,感觉就像。它被操作系统卸载为 "挂起"。预期的结果请解决这个问题。 Denis Timoshin 2014.04.12 11:04 #11239 barabashkakvn:要做到这一点,你需要知道感兴趣的指标线的偏移设置。这是一个来自iAlligator 技术指标的例子这是一种抵消,而不是对未来指标的计算。我有一个未来的计算,但我用一个偏移量来渲染它,我如何从专家顾问那里计算-1条?如果有人需要,请使用CopyBuffer(Handle_original,0,-2,10,Data_Ind ) Vladimir Karputov 2014.04.12 11:13 #11240 dentraf: 确切地说,我在未来有一个计算,但要画出一个偏移量,我如何从专家顾问那里读出-1条? 没有关于-1酒吧的报价。偏移量是:对一个存在的柱子(如2号柱子)进行计算,然后将这个计算值在2号柱子上减去偏移量后绘制出来。也就是说,如果偏移量是5,那么在第2条上计算出的数值就会画在第"-3 "条上。 1...111711181119112011211122112311241125112611271128112911301131...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尽管这两个结构的大小相同,并且相互复制没有损失,但我们仍然得到了一个警告。
所以这很好。要做一个明显的种姓并不难。当虫子开始爬进来的时候,弄清楚在哪里分配什么并不是很令人愉快。
从应用程序复制到SR。
终端版本和位
910 32位
问题描述
亲爱的开发者们,你们好!
在MQL5中,一些系统函数,如CopyRates、CopyTime、CopyOpen 等,旨在接收时间序列数据。
当你调用这些函数中的任何一个时,所要求的时间序列会在 "图表中的最大条数 "参数内加载到RAM。
然而,各种因素的结合,如:。
1.符号上有足够深的历史,或从服务器上完全加载。
2.图表中的最大条数 "参数为 "无限"。
3.要求提供最小的时间范围M1的数据。
消耗了非常多的内存。
由于运行MQL5的程序逻辑(例如,如果它是一个多货币专家顾问或一个指标),问题就更严重了。
可以为交替访问几个符号的低级时间段的数据而规定(例如,单一搜索)。
因此,RAM的消耗增加了许多倍。
Получение данных нужного таймфрейма из промежуточных данных
HCC格式的服务文件发挥着数据源的作用,按HC格式的要求的时间框架建立价格数据。HC格式的数据是时间序列,它为快速访问做了最大的准备。它们只在图表或mql5程序的要求下创建,数量不超过 "图表中的最大条数 "参数,并被保存在扩展名为hc的文件中供进一步使用。
为了节省资源,时间框架上的数据只有在需要时才会被加载并存储在RAM中。 如果长时间没有请求,数据就会从RAM中卸载,并保存到一个文件中。每个时间段的数据都是独立于其他时间段的现成数据准备的。数据准备和可用性的规则对所有的时间框架都是一样的。也就是说,尽管HCC格式的数据存储单位是分钟条,但HCC格式的数据的可用性并不意味着同体积的M1时间框架的HC格式数据的可用性和可及性。
从服务器接收新的数据会自动更新 所有时间段的HC格式的已用价格数据,并重新计算所有指标,这些指标明确使用它们作为计算的输入数据。
在引用的文件中,用黄色强调的过程的时间相当大:大约半小时(我的观察)。
结果,所有要求的时间序列都毫无理由地 "挤 "在 "RAM "中。
如果 "RAM "不是 "橡胶而 "贪婪的 "专家顾问/指标要求越来越多的时间序列,终端没有其他事情可做。
除了将多余的时间序列紧急 "转储 "回文件(缓存)。因此,在这种紧急复位中,终端可能会将时间序列重置为
一个 "破损的缓存",即它会丢失 "一大半 "的数据。而在下一次访问这个时间序列时,终端会将这个 "破损的缓存 "作为一个正常的缓存加载。
结果,终端图表显示的所需时间序列在历史上有一个巨大的漏洞。
预期的结果
MQL5语言倾向于节省执行环境的资源。这方面的一个例子如下。
1.ArrayFree 函数
2.ResourceFree 函数
3.删除 操作员
4.图表中的最大条数 " 参数
有没有可能在MQL5语言功能中增加一个系统功能,强制终端在不再使用的时间序列下进行操作?
如果没有打开这个时间序列的图表,在时间结束时?
例如,一个函数。
bool SeriesFlush(
string symbol_name, // имя символа
ENUM_TIMEFRAMES timeframe, // период
);
这将允许。
1.不担心RAM溢出。
2.不要担心 "破损的缓存",你只能通过在终端关闭时手动删除*.hc文件来摆脱它。
3.你不必依赖于你的操作系统的位模式和RAM的大小。
4.开发软件产品时,不要使用试图绕过上述缺点的 "拐杖"。
从应用程序复制到SR。
你能告诉我如何获得正偏移的指标数据吗? 我对-1条的数据感兴趣?
要做到这一点,你需要知道感兴趣的指标线的偏移设置。这是一个来自iAlligator 技术指标的例子
这是一种抵消,而不是对未来的指标计算。
从应用程序复制到SD。
终端版本和位模式
910 32位
问题描述
亲爱的开发者们,你们好!
在设计有大量迭代的循环时,提高代码质量的建议之一是
是使用系统嵌入对MQL5程序的强制停止的验证
IsStopped() 系统函数。
然而,在实践中,这个检查在指标中不起作用(在脚本和专家顾问中起作用)。
下面是显示问题本质的指标短代码。
如果你试图从图表中删除这个指标,"计算指标 "的过程不会因此而停止。
尽管它应该如此,因为要检查程序 的停止 标志。
你可以通过在任务管理器中监控terminal.exe进程来轻松发现这一点。在一个四核处理器上
这大约是CPU负载的25%。此外,终端负载不会随着时间的推移而减少,直到
终端关闭。甚至在终端关闭后,终端.exe进程仍然挂在管理器中。而且,感觉就像。
它被操作系统卸载为 "挂起"。
预期的结果
请解决这个问题。
要做到这一点,你需要知道感兴趣的指标线的偏移设置。这是一个来自iAlligator 技术指标的例子
这是一种抵消,而不是对未来指标的计算。
我有一个未来的计算,但我用一个偏移量来渲染它,我如何从专家顾问那里计算-1条?
如果有人需要,请使用CopyBuffer(Handle_original,0,-2,10,Data_Ind )
确切地说,我在未来有一个计算,但要画出一个偏移量,我如何从专家顾问那里读出-1条?