任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 600 1...593594595596597598599600601602603604605606607...1178 新评论 Denis Lysenko 2014.05.13 07:26 #5991 问候!:) 我有大致相同的指标代码。 bool busy=false; int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); limit=Bars-counted_bars+1; limit=MathMin(bBars-1, limit); if(IndicatorCounted()>0) limit=1; FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), Bars, IndicatorCounted()); FileFlush(han); //if(busy=false) return(0); for (i=0; i<limit; i++) { busy=true; FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), DoubleToStr(i, 0), DoubleToStr(IndicatorCounted(), 0)); FileFlush(han); Здесь идут сложные вычисления которые занимают минуты 3 } busy=false; } 我把它放在M1图上。该指示器与终端一起悬挂,据称是在进行计算。 我在15分钟内强行关闭它,并打开其日志。 事实证明,在计算第一次之前,该指标对新到的点位没有反应(这是符合逻辑的)。但它在评估过程中忘了告诉终端,IndicatorConted()必须已经被分配了一个 不同于0的值。 所以,事实证明,为评估而订购的传入点会记住IndicatorCounted()的当前值? 我试着通过繁忙的变量来控制它(注释出的字符串--同样的结果)。 我也试过这种方式。 int start() { FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), Bars, IndicatorCounted()); FileFlush(han); return(0); . . . } 自然,这一次一切都运作正常。 我们这里有什么?系统没有时间向IndicatorCounted()写入新的数值?换句话说,我需要做类似sleep()的事情?我知道这在指标中是不可能的) 或者,当一个新的tick到来时,因为旧的tick还没有完成计算,它记住了IndicatorCounte()仍然等于0,当它的时间到来时,它从旧值IndicatourCounted()=0开始计算? 该怎么做?) Alexey Viktorov 2014.05.13 07:40 #5992 Expert: 问候!:) 我有和指标差不多的代码。 它说明了一切。对关于这个代码,关于这个反应...来写? Artyom Trishkin 2014.05.13 07:43 #5993 peace1984: 这是我的第一次经验,不要太苛刻地评判:) 说实话,在我看来,测试人员记住的是变量的过去值--从上一次测试开始。如何--我不知道,我没有太多的时间来调试。也许这是一个终端错误。我只是在代码中加了一个注释,并将数值 输出到日志中。因此,事实证明,每次我运行一个新的测试时,前一个测试的值都会存储在sys变量中。真是一团糟。也许别人会看到,也许我的眼睛是湿的......。 附加的文件: 11_1.mq4 8 kb Denis Lysenko 2014.05.13 07:50 #5994 AlexeyVik: 这说明了一切。要想了解这个代码,大约需要这个答案...写? 关键是,代码的其余部分是不相关的。这篇稿件中描述了错误的本质。一般来说,我害怕用一个大帖子把人吓跑。所以我把它胀破了。 简而言之,它可以表述为:如果一个指标 的计算时间很长(超过一分钟),IndicatorCounted()总是返回0。 Alexey Viktorov 2014.05.13 07:55 #5995 artmedia70: 说实话,在我看来,测试人员记住的是变量的过去值--从上一次测试开始。如何--我不知道,没有太多的时间来汇报。也许是终端的一个错误。我只是在代码中插入了一个注释,并将数值输出到日志中。因此,事实证明,每次我运行一个新的测试时,前一个测试的值都会存储在sys变量中。真是一团糟。也许别人会看到,也许我的眼睛是湿的......。 只是你忘了,这句话 int sys=(Sys<0)?0:Sys; 当指标的属性被召回时,它们将不会被执行。 我还没有彻底研究过,但也许这能达到预期的效果? extern int Sys=0; int sys; // изменено double opb; double ops; double cb; double cs; double lot; double next_order; int i=0; int x; double max; double min; int ticket; int tip; int count; bool res; double bal; double sl; datetime d; double N; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { sys=(Sys<0)?0:Sys; // добавлено bal=AccountBalance(); return(0); } Artyom Trishkin 2014.05.13 07:57 #5996 AlexeyVik: 你只是忘记了字符串 当指标的属性被召回时,它们将不会被执行。 我还没有彻底研究过,但也许这能达到预期的效果? 一般来说,是一个顾问。但HZ,没有时间去实验。我让所有的EA按照我写的方式工作。我将不得不在测试器中追踪这个狗屎。当我有足够的时间。 Alexey Viktorov 2014.05.13 08:12 #5997 Expert: 关键是,代码的其余部分是不相关的。这篇稿件中描述了错误的本质。一般来说,我害怕用一个大帖子把人吓跑。所以我把它胀破了。 简而言之,它可以表述为:如果一个指标的计算时间很长(超过一分钟),IndicatorCounted()总是返回0。 这不是问题的关键。没有人需要你的全部秘密代码。就用这种误解写一个完整的测试片断的代码。还有这种方式。 bool busy=false; int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); limit=Bars-counted_bars+1; limit=MathMin(bBars-1, limit); if(IndicatorCounted()>0) limit=1; FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), Bars, IndicatorCounted()); FileFlush(han); //if(busy=false) return(0); for (i=0; i<limit; i++) { busy=true; FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), DoubleToStr(i, 0), DoubleToStr(IndicatorCounted(), 0)); FileFlush(han); Здесь идут сложные вычисления которые занимают минуты 3 } busy=false; } 你是什么时候清除了高亮线的?心灵感应者无济于事,凡人就更不用说了......。 然后是这一部分。 int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); limit=Bars-counted_bars+1; limit=MathMin(bBars-1, limit); if(IndicatorCounted()>0) limit=1; 我不知道它来自哪个程序员,但有一些东西写得不够好......这不是你的错。你和其他许多人一样,只是拿着代码并试图修复它......。 如果counted_bars变量等于自上一次指标调用(第一行)以来保持不变的条数 如果(counted_bars < 0)被检查,它怎么会变得小于零,我永远无法理解......。 其余的也是废话,但我懒得去分析...... peace1984 2014.05.13 08:12 #5998 AlexeyVik: 你只是忘记了字符串 当指标的属性被召回时,它们将不会被执行。 我还没有彻底研究过,但也许这能达到预期的效果? 我试过了......不起作用...... Alexey Viktorov 2014.05.13 08:18 #5999 artmedia70: 一般来说,是一个顾问。但HZ,没有时间去实验。我让所有的EA按照我写的方式工作。我将不得不在测试器中追踪这个狗屎。当我有足够的时间。 嗯,是的,当然,专家顾问。那么另一个问题就来了,为什么EA被放在图表上作为一个地下室指标?但这并不能改变问题,当重新启动指标和EA时,全局级别的变量没有被重新初始化,int sys=(Sys<0)?0:Sys;一行没有被执行。 Alexey Viktorov 2014.05.13 08:24 #6000 peace1984: 我试过了......不起作用...... 这可能不完全是我尝试的方式。 我只是在EA中重新编译了代码并运行了它。当我改变注释中的Sys参数时,这个值会发生变化。 1...593594595596597598599600601602603604605606607...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
问候!:)
我有大致相同的指标代码。
我把它放在M1图上。该指示器与终端一起悬挂,据称是在进行计算。
我在15分钟内强行关闭它,并打开其日志。
事实证明,在计算第一次之前,该指标对新到的点位没有反应(这是符合逻辑的)。但它在评估过程中忘了告诉终端,IndicatorConted()必须已经被分配了一个 不同于0的值。
所以,事实证明,为评估而订购的传入点会记住IndicatorCounted()的当前值?
我试着通过繁忙的变量来控制它(注释出的字符串--同样的结果)。
我也试过这种方式。
自然,这一次一切都运作正常。
![图2 图2](https://c.mql5.com/mql4/forum/2014/05/2014.05.13_17-50-14_p2.jpg)
我们这里有什么?系统没有时间向IndicatorCounted()写入新的数值?换句话说,我需要做类似sleep()的事情?我知道这在指标中是不可能的)
或者,当一个新的tick到来时,因为旧的tick还没有完成计算,它记住了IndicatorCounte()仍然等于0,当它的时间到来时,它从旧值IndicatourCounted()=0开始计算?
该怎么做?)
问候!:)
我有和指标差不多的代码。
这是我的第一次经验,不要太苛刻地评判:)
这说明了一切。要想了解这个代码,大约需要这个答案...写?
关键是,代码的其余部分是不相关的。这篇稿件中描述了错误的本质。一般来说,我害怕用一个大帖子把人吓跑。所以我把它胀破了。
简而言之,它可以表述为:如果一个指标 的计算时间很长(超过一分钟),IndicatorCounted()总是返回0。
说实话,在我看来,测试人员记住的是变量的过去值--从上一次测试开始。如何--我不知道,没有太多的时间来汇报。也许是终端的一个错误。我只是在代码中插入了一个注释,并将数值输出到日志中。因此,事实证明,每次我运行一个新的测试时,前一个测试的值都会存储在sys变量中。真是一团糟。也许别人会看到,也许我的眼睛是湿的......。
只是你忘了,这句话
当指标的属性被召回时,它们将不会被执行。
我还没有彻底研究过,但也许这能达到预期的效果?
你只是忘记了字符串
当指标的属性被召回时,它们将不会被执行。
我还没有彻底研究过,但也许这能达到预期的效果?
关键是,代码的其余部分是不相关的。这篇稿件中描述了错误的本质。一般来说,我害怕用一个大帖子把人吓跑。所以我把它胀破了。
简而言之,它可以表述为:如果一个指标的计算时间很长(超过一分钟),IndicatorCounted()总是返回0。
这不是问题的关键。没有人需要你的全部秘密代码。就用这种误解写一个完整的测试片断的代码。还有这种方式。
你是什么时候清除了高亮线的?心灵感应者无济于事,凡人就更不用说了......。
然后是这一部分。
我不知道它来自哪个程序员,但有一些东西写得不够好......这不是你的错。你和其他许多人一样,只是拿着代码并试图修复它......。
如果counted_bars变量等于自上一次指标调用(第一行)以来保持不变的条数
如果(counted_bars < 0)被检查,它怎么会变得小于零,我永远无法理解......。
其余的也是废话,但我懒得去分析......
你只是忘记了字符串
当指标的属性被召回时,它们将不会被执行。
我还没有彻底研究过,但也许这能达到预期的效果?
我试过了......不起作用......
一般来说,是一个顾问。但HZ,没有时间去实验。我让所有的EA按照我写的方式工作。我将不得不在测试器中追踪这个狗屎。当我有足够的时间。
我试过了......不起作用......
我只是在EA中重新编译了代码并运行了它。当我改变注释中的Sys参数时,这个值会发生变化。