初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1374 1...136713681369137013711372137313741375137613771378137913801381...1503 新评论 leon_17 2021.11.15 19:50 #13731 Alexey Viktorov #:有人把你教坏了。_LastError 变量将存储该值,直到下一个错误发生。 好吧,看,在主代码的开头,出现了以下错误 错误的日期时间 4010 日期和/或时间值不正确 然后一个对象被代码创建,_LastError被改写为 误差对象未被发现 4202 未找到图形对象 如果_LastError 检查是在代码的末尾,就像我通常做的那样,我会得到4202,然后直接忽略它。也就是说,错误4010将保持不被注意。我哪里错了? Alexey Viktorov#: 这是市场的要求,即没有从经纪人的server/dc收到执行错误。 谢谢,我不知道,我以为所有的错误都是被禁止的。 Alexey Viktorov 2021.11.15 20:12 #13732 leon_17 #:好吧,看,在主代码的开头,比如说,出现了以下错误。 错误的日期时间 4010 日期和/或时间值不正确 然后一个对象被代码创建,_LastError被改写为 误差对象未被发现 4202 未找到图形对象 如果_LastError 检查是在代码的末尾,就像我通常做的那样,我会得到4202,然后直接忽略它。也就是说,错误4010将保持不 被注意。我哪里做错了? 谢谢,不知道,以为所有的错误都是禁止的。 正是如此。你没有错... Mikhail Toptunov 2021.11.16 08:42 #13733 你好,谁能给我一个提示。 我把每个条形图的时间值具体写进一个数组。图表上有3000条的限制。 该任务。 - 要在每个新的条形图上移动数值阵列。 void CNewBar::PriceHL2() { int start= 0; ArrayResize(this.m_tim_pr_hl2,this.m_rt); if(this.m_pc!=0) { start= this.m_pc; ArrayCopy(this.m_tim_pr_hl2, this.m_tim_pr_hl2, 0, this.m_rt-this.m_pc); } for(int b= start; b < this.m_rt; b++) { this.m_tim_pr_hl2[b]= iTime(this.m_symbol, this.m_timeframe, this.m_rt-b); } } 我无法调整它,使其正常工作。 如果(this.m_rt-this.m_pc)=1,我是否正确地在一个新条形上移位阵列? ArrayCopy(this.m_tim_pr_hl2, this.m_tim_pr_hl2, 0, this.m_rt-this.m_pc); // this.m_rt-this.m_pc=1 Alexey Viktorov 2021.11.16 09:03 #13734 Mikhail Toptunov #:你好,谁能给我一个提示。我把每个条形图的时间值具体写进一个数组。图表上有3000条的限制。该任务。- 要在每个新的条形图上移动数值阵列。我无法调整它,使其正常工作。如果(this.m_rt-this.m_pc)=1,我在新条形上移动数组的做法是否正确? 也就是说,数组的大小必须正好是3000,在形成一个新的条形图时,应该先覆盖零指数.........,最后再写入新的值? 如果我理解正确的话,这个循环的意义是什么?只需将数组本身从第一个索引开始复制到空索引中,然后将新值写入最后一个索引中。 leon_17 2021.11.16 10:04 #13735 Alexey Viktorov #:如果没有找到对象,这就是对象搜索错误... 误差对象未被发现 4202 未找到图形对象 没有必要提醒它... 做了几个测试...以下是我的想法。在MQL5中,创建对象时没有必要使用ObjectFind()。 即使在OnTick里面,这样的代码也不会引起任何_LastError错误。 我不知道在MQL5系统代码的深处是如何实现的,也许那里已经上传了一些检查,只有在对象还不存在时才会创建。但事实证明,至少在MQL5内部创建一个对象时,不需要ObjectFind()。而且,它的所有属性在每次勾选时都会不变地更新。 对MQL4不能这样说。在现有对象上创建一个对象将导致4200("该对象已经存在")错误。这意味着使用ObjectFind()是 创建它的强制性条件。这给我留下了一个简单的可能性,即在不产生_LastError错误的情况下,从持续更新中关闭其属性。 请确认我的结论。 Mikhail Toptunov 2021.11.16 10:52 #13736 Alexey Viktorov #:也就是说,数组的大小应该正好是3000,当一个新的条形图形成时,应该先覆盖零指数.........,然后将新的值加到最后?如果我理解正确的话,为什么我需要一个循环?简单地说,数组本身应该从第一个索引开始复制到空索引中,然后将新值添加到最后一个索引中。 嗯,是的,很清楚,但如果有一个中断,例如,一个延迟,出现了两个小节,我把它们写下来。 非常感谢,我明白了,我将通过CopyTime进行尝试。 Alexey Viktorov 2021.11.16 11:06 #13737 leon_17 #:做了几个测试...情况是这样的。在MQL5中,创建对象时没有必要使用ObjectFind()。 该对象可以不经任何初步检查就被创建(只需使用ObjectCreate)。 即使在OnTick代码内,该代码也不会引起任何_LastError错误。 我不知道在MQL5系统代码的深处是如何实现的,也许那里已经上传了一些检查,只有在对象还不存在时才会创建。但事实证明,至少在MQL5内部创建一个对象时,不需要ObjectFind()。而且,它的所有属性在每次勾选时都会不变地更新。对MQL4不能这样说。在现有对象上创建一个对象将导致4200("该对象已经存在")错误。这意味着使用ObjectFind()是 创建它的强制性条件。这给我留下了一个简单的可能性,即从不断的更新中关闭其属性而不产生_LastError错误。 请确认我的结论。 这根本不是错误的问题。重点是,当一个对象被创建时,某些属性被分配给它,为什么要浪费机器时间和资源来重新定义属性而不进行修改。检查对象是否存在,然后只给那些需要改变的对象分配新的属性,这要便宜得多。例如,一个文本标签或Lable,往往只有这些对象中的文本应该被改变。所有其他房产都保持原样... Alexey Viktorov 2021.11.16 11:08 #13738 Mikhail Toptunov #:嗯,是的,它似乎很清楚,但如果有一个中断,例如延迟,出现了两个小节,我就把它们写下来。谢谢你,我明白了,我会通过CopyTime试试。 好吧,如果你通过CopyTime来做,根本就没有问题。只要从当前的3000条中复制,就可以了。 retired 2021.11.16 14:03 #13739 在下挂单 或从市场开仓时,我如何在程序代码中设置常规跟踪止损的水平? 这一点如何手动完成是很清楚的。非标准尾随止损的程序并不有趣。 预先感谢你。 Ivan Butko 2021.11.17 10:24 #13740 for (int symbols; symbols < SymbolsTotal(true); symbols++) { Print(SymbolName(symbols ,true)); } 这样的设计为什么不可行?错在哪里...(该日志为空) 还有日元,也是空的。 enum c_mode { Auto, Manual, }; input c_mode MODE = Auto; if (MODE==Auto) { Print("MODE=Auto"); } 1...136713681369137013711372137313741375137613771378137913801381...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有人把你教坏了。_LastError 变量将存储该值,直到下一个错误发生。
好吧,看,在主代码的开头,出现了以下错误
错误的日期时间
4010
日期和/或时间值不正确
然后一个对象被代码创建,_LastError被改写为
误差对象未被发现
4202
未找到图形对象
如果_LastError 检查是在代码的末尾,就像我通常做的那样,我会得到4202,然后直接忽略它。也就是说,错误4010将保持不被注意。我哪里错了?
这是市场的要求,即没有从经纪人的server/dc收到执行错误。
谢谢,我不知道,我以为所有的错误都是被禁止的。
好吧,看,在主代码的开头,比如说,出现了以下错误。
错误的日期时间
4010
日期和/或时间值不正确
然后一个对象被代码创建,_LastError被改写为
误差对象未被发现
4202
未找到图形对象
如果_LastError 检查是在代码的末尾,就像我通常做的那样,我会得到4202,然后直接忽略它。也就是说,错误4010将保持不 被注意。我哪里做错了?
谢谢,不知道,以为所有的错误都是禁止的。
正是如此。你没有错...
你好,谁能给我一个提示。
我把每个条形图的时间值具体写进一个数组。图表上有3000条的限制。
该任务。
- 要在每个新的条形图上移动数值阵列。
我无法调整它,使其正常工作。
如果(this.m_rt-this.m_pc)=1,我是否正确地在一个新条形上移位阵列?
你好,谁能给我一个提示。
我把每个条形图的时间值具体写进一个数组。图表上有3000条的限制。
该任务。
- 要在每个新的条形图上移动数值阵列。
我无法调整它,使其正常工作。
如果(this.m_rt-this.m_pc)=1,我在新条形上移动数组的做法是否正确?
也就是说,数组的大小必须正好是3000,在形成一个新的条形图时,应该先覆盖零指数.........,最后再写入新的值?
如果我理解正确的话,这个循环的意义是什么?只需将数组本身从第一个索引开始复制到空索引中,然后将新值写入最后一个索引中。
如果没有找到对象,这就是对象搜索错误...
误差对象未被发现
4202
未找到图形对象
没有必要提醒它...
做了几个测试...以下是我的想法。在MQL5中,创建对象时没有必要使用ObjectFind()。
即使在OnTick里面,这样的代码也不会引起任何_LastError错误。
我不知道在MQL5系统代码的深处是如何实现的,也许那里已经上传了一些检查,只有在对象还不存在时才会创建。但事实证明,至少在MQL5内部创建一个对象时,不需要ObjectFind()。而且,它的所有属性在每次勾选时都会不变地更新。
对MQL4不能这样说。在现有对象上创建一个对象将导致4200("该对象已经存在")错误。这意味着使用ObjectFind()是 创建它的强制性条件。这给我留下了一个简单的可能性,即在不产生_LastError错误的情况下,从持续更新中关闭其属性。
请确认我的结论。
也就是说,数组的大小应该正好是3000,当一个新的条形图形成时,应该先覆盖零指数.........,然后将新的值加到最后?
如果我理解正确的话,为什么我需要一个循环?简单地说,数组本身应该从第一个索引开始复制到空索引中,然后将新值添加到最后一个索引中。
嗯,是的,很清楚,但如果有一个中断,例如,一个延迟,出现了两个小节,我把它们写下来。
非常感谢,我明白了,我将通过CopyTime进行尝试。
做了几个测试...情况是这样的。在MQL5中,创建对象时没有必要使用ObjectFind()。
该对象可以不经任何初步检查就被创建(只需使用ObjectCreate)。 即使在OnTick代码内,该代码也不会引起任何_LastError错误。
我不知道在MQL5系统代码的深处是如何实现的,也许那里已经上传了一些检查,只有在对象还不存在时才会创建。但事实证明,至少在MQL5内部创建一个对象时,不需要ObjectFind()。而且,它的所有属性在每次勾选时都会不变地更新。
对MQL4不能这样说。在现有对象上创建一个对象将导致4200("该对象已经存在")错误。这意味着使用ObjectFind()是 创建它的强制性条件。这给我留下了一个简单的可能性,即从不断的更新中关闭其属性而不产生_LastError错误。
请确认我的结论。
嗯,是的,它似乎很清楚,但如果有一个中断,例如延迟,出现了两个小节,我就把它们写下来。
谢谢你,我明白了,我会通过CopyTime试试。
好吧,如果你通过CopyTime来做,根本就没有问题。只要从当前的3000条中复制,就可以了。
在下挂单 或从市场开仓时,我如何在程序代码中设置常规跟踪止损的水平?
这一点如何手动完成是很清楚的。非标准尾随止损的程序并不有趣。
预先感谢你。
这样的设计为什么不可行?错在哪里...(该日志为空)
还有日元,也是空的。