新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 18 1...111213141516171819202122232425...1953 新评论 Timur1988 2016.11.28 21:24 #171 Artyom Trishkin: 这不是好事。你是否在编译时可能得到警告?在这种情况下,你需要摆脱导致警告的原因,而不是#属性严格#。 在写#property strict的时候,编译器在每个for()循环中都给出错误,说变量必须有一个类型,所以我不得不在每个循环中写int i和int p。此后,编译器没有产生错误,但该行没有构建。当我删除#property strict后,编译器不再需要在每个周期中声明类型,这一行就被构建了。 7u6y5t4r3e2w1q 2016.11.28 21:39 #172 我已经给我的余额充值了,现在我找不到真实账户 的终端了。 Vitalie Postolache 2016.11.28 22:00 #173 Timur1988: 当#property strict被拼出来的时候,编译器在每个for()循环中都会产生错误,认为变量必须有一个类型,所以我不得不在每个循环中拼出int i和int p。此后,编译器没有产生错误,但该行没有构建。当我删除#property strict时,编译器不要求在每个循环中声明类型,这一行就被构建了。一个利用逻辑中隐含错误的典型案例。一旦编译器变得 "更严格",自欺欺人的情况就会慢慢消失。我在想为什么会有这么多相同的循环?还有,当在图表上 运行指标 时,你为什么不以任何方式去理会 "超出阵列"的错误?例如,这里。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } Vitalie Postolache 2016.11.28 22:03 #174 7u6y5t4r3e2w1q:我已经给我的余额充值了,现在我找不到真实账户 的终端了。 终端是一样的,你只需要重新登录到一个真正的账户。如何做:文件 - 连接到交易账户 - 在出现的窗口中指定账户号码、密码和服务器。所有这些数据都是由区政府提供的,如果有什么问题可以问他们。 Andrey F. Zelinsky 2016.11.28 22:36 #175 Timur1988: 当#property strict被拼出来的时候,编译器在每一个for()循环中都会给出错误,说变量必须有一个类型,所以我不得不在每一个循环中拼出int i和int p。此后,编译器没有产生错误,但该行没有构建。当我删除#property strict后,编译器不再需要在每个周期中声明类型,这一行就被构建了。答案很简单--你有一个微不足道的数组 超限--你的指标因为这个错误而停止工作。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { Mx[i][p]=sum_x[p+1][m-1]/(n-1); My[i][p]=sum_y[p+1][m-1]/(n-1);你可以在运行时看到这个错误--启动指标并在终端--专家标签上查看日志文件。 Andrey F. Zelinsky 2016.11.28 23:12 #176 Vitalie Postolache: 这是一个利用隐性逻辑错误的典型案例。 重写一个数组 是一个严重的逻辑错误--而且不能把这样的错误称为 "隐含"。 Timur1988 2016.11.28 23:17 #177 Vitalie Postolache: 一个利用逻辑中隐含错误的典型案例。一旦编译器变得 "更严格",自欺欺人的情况就会慢慢消失。我一直在想,为什么会有这么多相同的循环?还有,当在图表上 运行指标 时,你为什么不以任何方式去理会 "超出阵列"的错误?例如,这里。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } 如何计算每个维度的收盘价之和? 至于同样的周期,由于我对编程和算法的知识有限,我没有想到有什么更好的办法来从所需的维度中选择数组的元素,这对于公式中的替换是必要的。 Timur1988 2016.11.28 23:22 #178 Andrey F. Zelinsky:答案很简单--你有一个微不足道的数组 超限--你的指标因为这个错误而停止工作。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { Mx[i][p]=sum_x[p+1][m-1]/(n-1); My[i][p]=sum_y[p+1][m-1]/(n-1);你可以在执行阶段看到这个错误 - 启动指标并在终端选项卡上查看日志文件 - 专家。 你能告诉我如何解决这个错误吗? Vitalie Postolache 2016.11.28 23:29 #179 Timur1988: 那么你如何计算每个维度的收盘价之和呢? 至于同样的周期,由于我对编程和算法的知识有限,我想不出有什么更好的办法来从所需的维度中选择数组中的 那个元素,而这是需要在公式中替代的。例如,像这样。 for(int i=1; i<n; i++) { for(int p=1; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } Andrey F. Zelinsky 2016.11.28 23:39 #180 Timur1988: 你能告诉我如何解决这个错误吗?为了纠正这个错误,你需要了解你的公式--什么、为什么和如何计算。也只有这样,你才能算出你的算法,消除错误。通过 "直觉 "方法和不理解你的公式--你会消除错误,但你会做出错误的计算。p.s. 详细解释你正在计算的内容--详细注释你的代码--然后我们就会明白如何解决这个错误。 1...111213141516171819202122232425...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这不是好事。你是否在编译时可能得到警告?在这种情况下,你需要摆脱导致警告的原因,而不是#属性严格#。
我已经给我的余额充值了,现在我找不到真实账户 的终端了。
当#property strict被拼出来的时候,编译器在每个for()循环中都会产生错误,认为变量必须有一个类型,所以我不得不在每个循环中拼出int i和int p。此后,编译器没有产生错误,但该行没有构建。当我删除#property strict时,编译器不要求在每个循环中声明类型,这一行就被构建了。
一个利用逻辑中隐含错误的典型案例。一旦编译器变得 "更严格",自欺欺人的情况就会慢慢消失。
我在想为什么会有这么多相同的循环?
还有,当在图表上 运行指标 时,你为什么不以任何方式去理会 "超出阵列"的错误?
例如,这里。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
我已经给我的余额充值了,现在我找不到真实账户 的终端了。
当#property strict被拼出来的时候,编译器在每一个for()循环中都会给出错误,说变量必须有一个类型,所以我不得不在每一个循环中拼出int i和int p。此后,编译器没有产生错误,但该行没有构建。当我删除#property strict后,编译器不再需要在每个周期中声明类型,这一行就被构建了。
答案很简单--你有一个微不足道的数组 超限--你的指标因为这个错误而停止工作。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
你可以在运行时看到这个错误--启动指标并在终端--专家标签上查看日志文件。
这是一个利用隐性逻辑错误的典型案例。
一个利用逻辑中隐含错误的典型案例。一旦编译器变得 "更严格",自欺欺人的情况就会慢慢消失。
我一直在想,为什么会有这么多相同的循环?
还有,当在图表上 运行指标 时,你为什么不以任何方式去理会 "超出阵列"的错误?
例如,这里。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
至于同样的周期,由于我对编程和算法的知识有限,我没有想到有什么更好的办法来从所需的维度中选择数组的元素,这对于公式中的替换是必要的。
答案很简单--你有一个微不足道的数组 超限--你的指标因为这个错误而停止工作。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
你可以在执行阶段看到这个错误 - 启动指标并在终端选项卡上查看日志文件 - 专家。
那么你如何计算每个维度的收盘价之和呢?
至于同样的周期,由于我对编程和算法的知识有限,我想不出有什么更好的办法来从所需的维度中选择数组中的 那个元素,而这是需要在公式中替代的。
例如,像这样。
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
你能告诉我如何解决这个错误吗?
为了纠正这个错误,你需要了解你的公式--什么、为什么和如何计算。
也只有这样,你才能算出你的算法,消除错误。
通过 "直觉 "方法和不理解你的公式--你会消除错误,但你会做出错误的计算。
p.s. 详细解释你正在计算的内容--详细注释你的代码--然后我们就会明白如何解决这个错误。