错误、漏洞、问题 - 页 2533

 
Georgiy Merts:

在你的案例中,组织一个while()循环而不是for()循环。

检查是否有一些闪烁结束的迹象。

但关于 "可变频率的闪烁"--有些奇怪...我在飞行中没有看到任何错误,它应该相当频繁地闪动。

诚然,我怀疑创建和删除图形对象 而不是让它们隐形是明智的。 但是,似乎你不能让一个对象隐形......因此,只剩下删除。

谢谢你的答复,现在可以了。但眨眼也是一样的混乱,记录了它是如何发生的。而我用将LABEL颜色改为黑色来代替删除。



int i = 1;
   while(i > 0)  //true?
   {      
      if(!ObjectCreate(0,"Blink",OBJ_LABEL,0,0,0))
   {
      Print("Not Create! Error - ",GetLastError());
   }
   ObjectSetInteger(0,"Blink",OBJPROP_XDISTANCE,50+i);
   ObjectSetInteger(0,"Blink",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetString(0,"Blink",OBJPROP_TEXT,"Test");
   ObjectSetString(0,"Blink",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"Blink",OBJPROP_FONTSIZE,18);
   ObjectSetDouble(0,"Blink",OBJPROP_ANGLE,0);
   ObjectSetInteger(0,"Blink",OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Blink",OBJPROP_BACK,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTABLE,true);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTED,false);
   ObjectSetInteger(0,"Blink",OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,"Blink",OBJPROP_ZORDER,0);
   
   Sleep(200);
   
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Black);
   
   Sleep(200);
   } 
 
Влад:

谢谢你的答复,现在已经开始工作了。但眨眼也是一样的混乱,记录了它是如何发生的。而我用将LABEL颜色改为黑色来代替删除。


你可以看到,这取决于蜱虫的情况。这段代码应该在OnTimer()中完成,而不是在OnTick()中。

而且你不需要把它染成黑色--对象有一个可见性属性(OBJPROP_TIMEFRAMES)--你只需要管理它的可见性。

对象必须可见的时间段的值是由一组标志设置的。在你的案例中,你需要设置0(OBJ_NO_PERIODS)--该对象在任何地方都不可见,而 OBJ_ALL_PERIODS--在任何地方都可见。而且不要忘记在属性值改变后用ChartRedraw()更新图表。

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
Влад:

谢谢你的答复,现在已经开始工作了。但眨眼也是一样的混乱,记录了它是如何发生的。而我通过将LABEL的颜色改为黑色来取代删除。

我认为你还没有什么损失,试着使用我的脚本代码,它是有效的,它更短。

#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict

#include <ChartObjects\ChartObjectsTxtControls.mqh>
CChartObjectLabel Label;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Label.Create(0,"tst",0,0,50);
   Label.Description("Hello word!");
   Label.FontSize(14);
   bool show=true;
   while(!IsStopped())
     {
      color col=show ? clrRed : clrNONE;
      Label.Color(col);
      show=!show;
      ChartRedraw();
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+

它在脚本文件夹中!

 
Igor Makanu:

我认为你还没有什么损失,试着使用我的脚本代码,它是有效的,它更短。

它在漂流文件夹中!

伊戈尔,我知道它是用MQL5写的,而我有Metatrader 4,很遗憾。

 
Влад:

伊戈尔,我知道它是用MQL5写的,而我有Metatrader 4,很遗憾。

这是MQL4...可能已经试过了 ))))

 
哦,伙计,这就对了)。请原谅我的无礼,但是否可以用一个指标来代替脚本?我已经复制了指标模板的内涵,当我切换TF时,它是OK的。我把它复制到指标模板中,编译得很好。 但当我把它粘贴到图表上时,终端就挂掉了。
 
如果您知道如何在测试中的MQL5专家顾问中获得正向优化结果,请告知。这个问题被贴在这个主题中。 也许这里会有答案。
 
Влад:
哦,伙计,这就对了)。非常感谢,伊戈尔!对不起,冒昧地问一下,是否可以用一个指标来代替脚本?我已经复制了指标模板的内涵,并正常编译了它。我把它复制到指标模板中,编译得很好。 但当我把它粘贴到图表上时,终端就挂掉了。
附加的文件:
Blink.mq4  3 kb
 
Igor Makanu:

非常感谢您!)

 

对于网站管理员。

我找不到地方,我就写在这里了。

我需要修改个人资料中卖方的详细信息。

如何做到这一点?

我很早就在卖家区写了一条信息,但没有得到答复。

也许有其他方法?