错误、漏洞、问题 - 页 2081

 
Anatoli Kazharski:

这个问题出现在所有指标中。包括那些来自标准交货的。例如,移动平均线。

//---

而在几根钢筋形成之后。

//---

试着在你的环境中重现它。需要看看我是否是唯一有这个问题的人。


是的,我确认。

Terminal        MetaTrader 5 x64 build 1687 started (MetaQuotes Software Corp.)
Terminal        Windows 10 (Build 16299), x64 based PC, IE 11.00, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 4473 / 8077 Mb, HDD: 330591 / 475588 Mb, GMT+02:00
Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

动画。

指标不转移

 
与本主题无关的评论已被移至 "BUY_LIMIT, ORDER_TIME_DAY" 。
 
Vladimir Karputov:

是的,我确认。

动画。

谢谢你。在servicedesk应用程序 中添加了你的信息链接作为附录。需要对这个错误进行紧急修复,所有的工作都停止了。
 

fxsaber:

两个终端都有两个标签--贸易和邮件。我希望 "交易 "在任何时候都是活跃的。但当来自经纪人的内部邮件(如部分文件)到达时,标签切换到 "邮件"。

我怎样才能把这个真正讨厌的东西关掉?好吧,不应该有这样的干扰性通知,而且绝对是普通经纪人的电子邮件,他在一天内自动通知订单执行情况 几十次。我不明白为什么有时会切换到 "邮件",有时又不切换。

我怎样才能把它关掉呢?我从来不看 "E-Mail "标签,因为它是垃圾邮件。说句不好听的,看到终端GUI对垃圾邮件有这样的反应是很烦人的。


我想,我可以用WinApi实现一个功能,切换到所需的标签:贸易、平衡,等等。
试着自己实现它,或者从自由职业者那里订购,我希望那里仍有熟练的人。

 
Sergey Dzyublik:

我认为,通过使用WinApi,你可以实现一个功能来切换到所需的标签:贸易、平衡,等等。
试着自己实现它,或者从Freelancer订购,我希望那里还有熟练的人。

我自己也实行过这种变态的做法。我想要一个用户友好的GUI。

 
Aleksey Vyazmikin:

他又失去了记忆......

尽管仍有7千兆字节的内存可用。这到底是什么?

在服务台开一个票据。包括专家和优化设置

+描述操作系统、比特率、系统配置。

 
Alexey Da:

在服务台开一个票据。附上专家和优化设置

+描述操作系统、比特率、系统配置。


我不知道如何重现这一切--上周这条信息每天都出现,根本没有EA工作。而日前随着优化...然后在关闭所有程序后一切都正常了。

会不会是程序之间的冲突?我注意到,当Opera浏览器打开时,这个错误总是存在。

 

这个主题 中,我发现了一个有趣的事情,在MT4和MT5中Comment()命令的性能。在MT5中,这个命令的运行速度比MT4慢了~2000倍(!!!)。

下面是在两个平台上运行的测试代码。

#property script_show_inputs
#include <Canvas\Canvas.mqh>

input uint   FontSize=12;                                   // размер шрифта
input uint   Count=1000;                                    // размерность цикла
input ENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Способ обработки цвета

void OnStart()
  {
   CCanvas Text;
   ulong ColorScreen=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

   Text.FontSet("Arial",FontSize);
   string str="Необходимо подождать.Выполняется проход цикла №: = ";
   int H=Text.TextHeight(str);
   int W=Text.TextWidth(str+"00000");
   if(!Text.CreateBitmapLabel(0,0,"FONT",2,130,W,H,format)) Print("Error creating canvas: ",GetLastError());

   ulong t1=1,t2=1,t0;
   uint j=0;
   color clr=(color)ARGB(255,255^GETRGBR(ColorScreen),255^GETRGBG(ColorScreen),255^GETRGBB(ColorScreen));
   t0=GetMicrosecondCount();
   for(j=0;j<Count;j++)
     {
      Comment(str+IntegerToString(j));
      if (IsStopped()) break;
     }
   t1=GetMicrosecondCount()-t0;

   t0=GetMicrosecondCount();
   for( j=0;j<Count;j++)
     {
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,str+IntegerToString(j),clr);
      Text.Update();
      if (IsStopped()) break;
     }
   t2=GetMicrosecondCount()-t0;
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,"Время Comment = "+IntegerToString(t1)+" Время Canvas = "+IntegerToString(t2),clr);
      Text.Update();
      Sleep(30000);
     
   Text.Destroy();
   Comment("");
  }
//+------------------------------------------------------------------+

这样做可以吗?

附加的文件:
 
Nikolai Semko:

这个主题 中,我发现了一个有趣的事情,在MT4和MT5中Comment()命令的性能。在MT5中,这个命令的运行速度比MT4慢了~2000倍(!!!)。

下面是在两个平台上运行的测试代码。

这样可以吗?

是的,这是对的,也是正确的。

在MT4中,评论功能只是改变内部的评论文本框,而不试图在图表上显示。也就是说,评论会在下一次常规图表渲染的某个时间显示出来,但改变评论本身并不会导致图表重绘。如果你迅速改变评论,它的变化将不会在图表中显示出来。

在MT5中,评论功能将明确地导致重新绘制图表,因为优先考虑在图表中显示评论。否则,该函数就没有用。

这正是区别所在。


如果在MT4中,你在调用Comment后强行把ChartRedraw(),行为仍将与MT5中不一样。Metatrader 4中的ChartRedraw()忽略了注释值,自己决定是否应该从最后一帧开始更新图表。当然,在没有每秒数百个报价会导致图表数据失效的情况下,ChartRedraw决定 "为什么要画一个没有变化的图表",并跳过画框。

Metatrader 5也有同样的系统,但有更多的情况下会优先考虑无条件提款。

终端是图形化的应用,可以提供每秒数百帧的画面,并为了性能而在经济的显示模式下运行。


因此,在运行基准时有额外的结论。

  • 我们不能把对ChartRedraw的调用看作是一个真正的ChartRedraw。

  • 你必须始终知道并证明 "为什么要重新绘制图表 "和 "我是否使市场的内部图景失效,从而使终端决定重新绘制图表 "的说法。

  • 你不应该在MT5的基准测试中做出多个结论,你应该始终考虑你是如何影响渲染的。

  • MT5有一个更正确的系统来改变图表上的对象,有必要清楚地了解读/写命令的后果。
    建议不要混合使用读/写命令,并分别进行大量读和大量写。

  • 在基准测试中频繁重绘图表导致结果对显卡的高度依赖性。
    事实上,一些测试最终可能会测试显卡,而不是算法或功能。在笔记本电脑和台式电脑上的测试可能会显示多次不同的结果,仅仅是因为显卡慢了3-5倍。

这些错误是每个人都会犯的。

 
Renat Fatkhullin:

是的,这是对的,也是正确的。

非常感谢您的详细解答。这几乎是我所想的。这一切都很有意义。