错误、漏洞、问题 - 页 1520 1...151315141515151615171518151915201521152215231524152515261527...3184 新评论 [删除] 2016.02.26 12:27 #15191 Slawa:目前还没有其他办法。我们已经讨论过引入一个新的退出命令,可以立即终止程序,但这里还有一些未解决的问题 这真是太糟糕了。是的,像C++中的exit()会很好。现在,将嵌套函数的响应拉到调用者的函数中是相当有问题的。而且没有通用的图书馆。 coderex 2016.02.26 12:59 #15192 Alexey Kozitsyn: 这真是太糟糕了。是的,像C++中的exit()会很好。现在,将嵌套函数的响应拉到调用函数中是相当有问题的。而且没有通用的图书馆。 另一种方法是创建一个函数,分别删除程序的所有对象,当满足从终端删除程序的条件时,调用该函数,然后调用ExpertRemove(),在这种情况下,一切应该更快地完成...虽然不确定 :) [删除] 2016.02.26 14:08 #15193 coderex: 另外,你可以创建一个单独的函数来删除程序的所有对象,并在满足从终端删除程序的条件时调用它,然后再调用ExpertRemove(),在这种情况下,它的终止速度应该更快。虽然不确定 :)正如我以前写过的,而且以前在本网站的一篇文章中也建议过,在一个深度嵌套的函数中出现错误时,你可以在数组外 调用除以0或退出。但这并不美好。是的,而且不仅仅是在OOP中(就我的理解,你是指它)。很简单--如果一个错误不能被修复,程序将被终止。 [删除] 2016.02.26 14:10 #15194 Slawa: 停止,但不是立即停止 我不明白,ExpertRemove() 在指标中使用是否正确? Sergey Gritsay 2016.02.26 14:43 #15195 Alexey Kozitsyn: 我不明白,在指标中使用ExpertRemove()工作是否正确?我认为有一个指标的功能,或者说它已经没有意义了。ChartIndicatorDelete(); Slava 2016.02.26 15:03 #15196 Alexey Kozitsyn: 我不明白,在指标中使用ExpertRemove()工作是否正确?不,ExpertRemove() 在指标中是重叠的。"停止,但不是立即停止 "是关于ExpertRemove的一般说法。该功能不会中断程序操作。 [删除] 2016.02.26 15:13 #15197 Slawa:不,ExpertRemove()在指标中是重叠的。"停止,但不是立即停止 "是关于ExpertRemove的一般说法。这个功能不会中断程序的运行。 一般来说,是否有计划解决exit()的问题?还是用户通过拐杖解决?) Ilya Malev 2016.02.26 17:24 #15198 Slawa: 请举例说明。给出指标的源代码以说明问题将该文本插入在编辑器中创建的默认指标的OnCalculate中。把它放在任何图表上。你将在图表窗口的左上角看到该指标的操作。从指标列表中选择 "删除 "后,它不会停止工作,你会在左上角 看到它。即使在窗口关闭后,它也会继续。打开一个新窗口后,将在新窗口中继续进行。这个窗口的符号不一定与你一开始的那个相同 :)只有当终端关闭时,指示器的工作才会停止。而且我不知道它是否停止--我只是不得不通过任务管理器手动删除终端来重新启动它......同时,IsStopped函数的帮助说,如果有一个终止mql-program的命令,程序操作在3秒后停止。 int i=0; while(true){ Comment(i++); Sleep(100); } 而如果while(true)被替换为 while(!IsStopped()),那么当从图表中删除时,指标会成功完成。 Alexandre 2016.02.26 23:53 #15199 内部编译器错误的一个有趣原因(指标中使用的函数)。void SaveData ( uint handle_, int wrdata_, int interv_, string dpath_, int tmode_, int tmult_, long ctime_, long& ltime_ ){ int ierr, wrtint;// ---- 如果 ( interv_ > 0 ) // 工作模式{ 如果 ( MQLInfoInteger ( MQL_TESTER ) == 0 ){ wrtint = interv_; }//没有任何意义 否则{ wrtint = interv_ * tmult_; }//无所谓//if ( ( ctime_ - ltime_ ) >= ( wrtint * 60 ) ) // 如果这一行被注释掉,错误就会消失。{// 一些代码来保存数据 ...没有意义 - 已测试//ltime_= ctime_; // 在一般情况下也不重要。}// if ( ctime_ - ltime_ ) >= ( wrtint * 60 )}// if ( interv_ > 0 )// ---- 返回。}// void SaveData( 对不起,我没有故意使用SRC按钮,因为我不能用它来选择文本的必要部分 )治疗方法很明显,但你应该同意--这是一个相当有趣的故障。:))) Errors, bugs, questions DoEasy 函数库中的其他类(第六十六部分):MQL5.com 信号集合类 连续前行优化 (第八部分): 程序改进和修复 Ilya Malev 2016.02.28 11:40 #15200 有一家经纪公司的营业额为100万,佣金为16x2元。 他们显然在服务器设置中设置了16元的佣金。现在在他们的服务器上进行测试时,每笔交易都要扣除16x2的佣金,无论其手数多少,也就是说,只有10手才能进行充分的测试。是他们缺乏设置服务器的技能,还是MT5的真正限制?我到底可以建议他们在服务器上做什么,以便在测试器中正确处理佣金? 1...151315141515151615171518151915201521152215231524152515261527...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
目前还没有其他办法。
我们已经讨论过引入一个新的退出命令,可以立即终止程序,但这里还有一些未解决的问题
这真是太糟糕了。是的,像C++中的exit()会很好。现在,将嵌套函数的响应拉到调用函数中是相当有问题的。而且没有通用的图书馆。
另外,你可以创建一个单独的函数来删除程序的所有对象,并在满足从终端删除程序的条件时调用它,然后再调用ExpertRemove(),在这种情况下,它的终止速度应该更快。虽然不确定 :)
正如我以前写过的,而且以前在本网站的一篇文章中也建议过,在一个深度嵌套的函数中出现错误时,你可以在数组外 调用除以0或退出。但这并不美好。
是的,而且不仅仅是在OOP中(就我的理解,你是指它)。很简单--如果一个错误不能被修复,程序将被终止。
停止,但不是立即停止
我不明白,在指标中使用ExpertRemove()工作是否正确?
我认为有一个指标的功能,或者说它已经没有意义了。
ChartIndicatorDelete();
我不明白,在指标中使用ExpertRemove()工作是否正确?
不,ExpertRemove() 在指标中是重叠的。
"停止,但不是立即停止 "是关于ExpertRemove的一般说法。该功能不会中断程序操作。
不,ExpertRemove()在指标中是重叠的。
"停止,但不是立即停止 "是关于ExpertRemove的一般说法。这个功能不会中断程序的运行。
请举例说明。给出指标的源代码以说明问题
同时,IsStopped函数的帮助说,如果有一个终止mql-program的命令,程序操作在3秒后停止。
而如果while(true)被替换为 while(!IsStopped()),那么当从图表中删除时,指标会成功完成。
内部编译器错误的一个有趣原因(指标中使用的函数)。
void SaveData ( uint handle_, int wrdata_, int interv_, string dpath_, int tmode_, int tmult_, long ctime_, long& ltime_ )
{
int ierr, wrtint;
// ----
如果 ( interv_ > 0 ) // 工作模式
{
如果 ( MQLInfoInteger ( MQL_TESTER ) == 0 ){ wrtint = interv_; }//没有任何意义
否则{ wrtint = interv_ * tmult_; }//无所谓
//
if ( ( ctime_ - ltime_ ) >= ( wrtint * 60 ) ) // 如果这一行被注释掉,错误就会消失。
{
// 一些代码来保存数据 ...没有意义 - 已测试
//
ltime_= ctime_; // 在一般情况下也不重要。
}// if ( ctime_ - ltime_ ) >= ( wrtint * 60 )
}// if ( interv_ > 0 )
// ----
返回。
}// void SaveData
( 对不起,我没有故意使用SRC按钮,因为我不能用它来选择文本的必要部分 )
治疗方法很明显,但你应该同意--这是一个相当有趣的故障。:)))
有一家经纪公司的营业额为100万,佣金为16x2元。 他们显然在服务器设置中设置了16元的佣金。现在在他们的服务器上进行测试时,每笔交易都要扣除16x2的佣金,无论其手数多少,也就是说,只有10手才能进行充分的测试。
是他们缺乏设置服务器的技能,还是MT5的真正限制?我到底可以建议他们在服务器上做什么,以便在测试器中正确处理佣金?