新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1617 1...161016111612161316141615161616171618161916201621162216231624...1953 新评论 Nerd Trader 2021.09.17 16:44 #16161 MakarFX #:如果是这样 我花了很长时间才搞清楚为什么你的解决方案不会导致无限循环。尽管如此,它也会自己执行1次。但上述解决方案促使我创建了一个布尔开关。 ulong ms=0; bool msFlag=0; void OnTimer(){ if(msFlag!=0 && GetMicrosecondCount()-ms > 100000){ ObjectSetInteger(0,"button1",OBJPROP_STATE,false); msFlag=0; } } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){ ms=GetMicrosecondCount(); msFlag=1; } } 现在,只有当按钮被按下时,代码才会被执行。但是,如果终端运行了几天,会发生什么?另一个返回时间的方法的帮助,它说会有一个溢出。 ulong ms=0; bool msFlag=0; int OnInit() { EventSetMillisecondTimer(1); ... } void OnTimer(){ if(msFlag!=0 && Seconds() > 20){ ObjectSetInteger(0,"button1",OBJPROP_STATE,false); msFlag=0; } } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){ msFlag=1; } } 同样的代码,但用Seconds()代替GetMicrosecondCount,就不能工作。"Seconds() > 20 "如果更高--按钮冻结在 "按下 "状态。如果低一点--就会起作用,但速度快得几乎让人察觉不到(闪烁)。 Tretyakov Rostyslav 2021.09.17 17:39 #16162 Nerd Trader #: 很久以来都不明白为什么你的解决方案不会导致无限循环。尽管如此,它也会自行执行1次。但上面的解决方案促使我创建了一个布尔型开关。现在,代码只在按钮被按下时执行。但是,如果终端运行了几天,会发生什么?另一个返回时间的方法的帮助说会发生溢出。 同样的代码,但用Seconds()代替GetMicrosecondCount,就不能工作。"Seconds() > 20 "如果更高 - 按钮冻结在 "按下 "状态。如果低一点--它就会起作用,但速度快得几乎看不见(眨眼)。 然后是这样的 //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1") {ms=TimeCurrent();} } //+------------------------------------------------------------------+ void OnTimer() { if(ms!=0&&TimeCurrent()>ms) { ObjectSetInteger(0,"button1",OBJPROP_STATE,false); ms=0; } } //+------------------------------------------------------------------+ Nerd Trader 2021.09.18 02:44 #16163 MakarFX #:然后是这样的 不,它不是那样工作的,如果秒不工作,TimeCurrent()就更不工作了。到目前为止,Mileseconds是唯一可行的变体,尽管它可能导致溢出。 Tretyakov Rostyslav 2021.09.18 12:31 #16164 Nerd Trader #: 不,它不是那样的,如果秒没有作用,那么TimeCurrent()就更有作用了。到目前为止,mile-seconds是唯一可行的变体,尽管它可能导致溢出。 它是有效的! Nerd Trader 2021.09.18 14:52 #16165 MakarFX #: 它是有效的! mmm对我不起作用:按钮不能自行释放。 Tretyakov Rostyslav 2021.09.18 15:30 #16166 Nerd Trader #: mmm对我不起作用:按钮不能自行释放。 现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作 Nerd Trader 2021.09.18 17:38 #16167 MakarFX #: 现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作 我的经纪人的加密货币在周末不交易。在测试器中试了一下--不起作用。 Tretyakov Rostyslav 2021.09.18 17:53 #16168 Nerd Trader #: 我的经纪人周末的加密货币没有交易。在测试器中试了一下--不起作用。 打开A-Markets演示。计时器在测试器中不起作用。 Galim_V 2021.09.18 18:36 #16169 问候,我得到一个数组。 int arr[]={6,4,6,7,55,55,7,6,77,66,66,2,2}; 我怎样才能改变它,使所有的数字都存在,但没有重复? int re[]={6,4,7,55,77,66,2}; Vitaly Muzichenko 2021.09.18 19:04 #16170 Galim_V #:问候,有一个数组我怎样才能改变它,使所有的数字都出现,但不重复? 你可以不使用库来做这件事 int arr[]= {6,4,6,7,55,55,7,6,77,66,66,2,2}; int re[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int AS=ArraySize(arr); int n=0; for(int i=0; i<AS; i++) { if(ArraySearch(re, arr[i])==-1) { n++; ArrayResize(re,n); re[n-1]=arr[i]; } } ArrayPrint(re); } //=============================================================================================== //------------------------------ Функция удаляет копии с массива -------------------------------+ //=============================================================================================== int ArraySearch(int& m[], int e) { for(int i=0; i<ArraySize(m); i++) { if(m[i]==e) return(i); } return(-1); } //+------------------------------------------------------------------+ 1...161016111612161316141615161616171618161916201621162216231624...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果是这样
现在,只有当按钮被按下时,代码才会被执行。但是,如果终端运行了几天,会发生什么?另一个返回时间的方法的帮助,它说会有一个溢出。
同样的代码,但用Seconds()代替GetMicrosecondCount,就不能工作。"Seconds() > 20 "如果更高--按钮冻结在 "按下 "状态。如果低一点--就会起作用,但速度快得几乎让人察觉不到(闪烁)。
很久以来都不明白为什么你的解决方案不会导致无限循环。尽管如此,它也会自行执行1次。但上面的解决方案促使我创建了一个布尔型开关。现在,代码只在按钮被按下时执行。但是,如果终端运行了几天,会发生什么?另一个返回时间的方法的帮助说会发生溢出。 同样的代码,但用Seconds()代替GetMicrosecondCount,就不能工作。"Seconds() > 20 "如果更高 - 按钮冻结在 "按下 "状态。如果低一点--它就会起作用,但速度快得几乎看不见(眨眼)。
然后是这样的
然后是这样的
不,它不是那样的,如果秒没有作用,那么TimeCurrent()就更有作用了。到目前为止,mile-seconds是唯一可行的变体,尽管它可能导致溢出。
它是有效的!
mmm对我不起作用:按钮不能自行释放。
现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作
我的经纪人周末的加密货币没有交易。在测试器中试了一下--不起作用。
问候,我得到一个数组。
我怎样才能改变它,使所有的数字都存在,但没有重复?
问候,有一个数组
我怎样才能改变它,使所有的数字都出现,但不重复?
你可以不使用库来做这件事