エラー、バグ、質問 - ページ 2081

 
Anatoli Kazharski:

この問題は、すべての指標に現れます。通常配送のものを含む。例えば、Moving Average。

//---

そして、いくつかのバーが形成された後。

//---

あなたの環境でも再現してみてください。この問題があるのは私だけかどうか確認する必要があります。


はい、確認しました。

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:

はい、確認しました。

アニメーション

ありがとうございます。サービスデスク・アプリケーションへの メッセージのリンクを追記しました。このバグの緊急修正が必要です。すべての作業が止まっています。
 

fxsaber:

両端末とも、「トレード」と「メール」の2つのタブがあります。トレーディング」は、常にアクティブであってほしい。しかし、ブローカーからの内部メール(部分的なfilllなど)が届くと、タブが「メール」に切り替わります。

どうすれば、この本当の厄介者を消すことができるのでしょうか?しかも、普通のブローカーのメールには、一日に何十回も注文が成立した ことを自動的に知らせてくれる。メール」に切り替わるときと切り替わらないときがあるのは、よくわからない。

どうすれば消せますか?E-Mail」タブはSpamなので、読んだことはありません。控えめに言って、Spamに対してターミナルのGUIがこのように反応するのは迷惑な話です。


WinApiを使って、貿易、残高など、目的のタブに切り替える機能を実装すればいいと思うのですが、どうでしょうか?
自分で実装してみるか、フリーランサーに発注するか、まだ腕のいい人がいるといいんだけど。

 
Sergey Dzyublik:

WinApiを使えば、貿易、残高など、目的のタブに切り替える機能を実装できると思います。
自分で実装してみるか、Freelancerに発注するか、まだ腕のいい人がいるといいんだけど。

私もこの曲解を実践したことがあります。使いやすいGUIが欲しい。

 
Aleksey Vyazmikin:

また記憶をなくした...。

まだ7ギガバイトのRAMが使えるにもかかわらず。これは一体何なんだ?

サービスデスクでチケットを開設する。エキスパートと最適化の 設定を含める。

+ オペレーティングシステム、ビットレート、システム構成について説明する。

 
Alexey Da:

サービスデスクでチケットを開設する。エキスパートと最適化 設定を貼り付けます。

+ オペレーティングシステム、ビットレート、システム構成について説明する。


先週は毎日このメッセージが表示され、EAがまったく動作しませんでした。そして先日のオプティマイゼーションで...。というメッセージが表示され、すべてのプログラムを終了させると、すべて正常に動作するようになりました。

プログラム間の競合はありえるのか?Operaブラウザを開いているときは常にバグがあることに気づきました。

 

このスレッドで、MT4とMT5のComment()コマンドの性能について興味深いことがわかりました。MT5では、このコマンドはMT4よりも2000倍(!!)遅く実行されます。

以下は、2つのプラットフォームで動作するテストコードです。

#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倍(!!)遅く実行されます。

以下は、2つのプラットフォームで動作するテストコードです。

いいんですか?

はい、そのとおりで正しいです。

MT4では、コメント機能は、チャート上に表示しようとせずに、単に内部のコメントテキストボックスを変更するだけです。つまり、コメントは次の通常のチャート描画のいつかには表示されますが、コメント自体を変更してもチャートが再描画されることはないのです。コメントをすばやく変更した場合、その変更はグラフに表示されません。

MT5では、コメント機能はチャートへのコメント表示を優先するため、明示的にチャートの再描画が行われます。そうでない場合は、この機能は役に立ちません。

まさにその違いです。


MT4でCommentを呼び出した後に無理やりChartRedraw()を入れても、MT5と同じ動作にはならない。Metatrader 4 の ChartRedraw() はコメント値を無視し、最後のフレームからチャートを更新するかどうかを自分で決定します。もちろん、チャートデータの無効化を引き起こすような毎秒数百の相場がない場合、ChartRedrawは「なぜ変化のないチャートを描くのか」と判断し、フレームの描画をスキップするのだそうです。

Metatrader 5も同様のシステムですが、無条件レンダリングが優先されるケースが多くなっています。

端末はグラフィカルなアプリケーションであり、1秒間に数百フレームを提供し、パフォーマンスのために経済的な表示モードで動作させることができます。


それゆえ、ベンチマークを実行する際には、追加の結論が必要となります。

  • ChartRedrawの呼び出しを本当のChartRedrawと見なすことはできません。

  • なぜチャートが再描画されるのか」「チャートの再描画を決定させるために、市場の内部画像を無効にするのか」を常に把握し、証明しなければならないのです。

  • ベンチマーク中にMT5で複数の結論を出すのではなく、常にレンダリングにどのような影響を与えるかを考えるべき

  • MT5では、チャート上のオブジェクトを変更するシステムがより正しくなっており、読み取り/書き込みコマンドの結果を明確に理解することが必要です。
    読み書きのコマンドを混在させず、一括読み込みと一括書き込みを別々に行うことを推奨します。

  • ベンチマークではグラフの再描画が頻繁に行われるため、グラフィックスカードへの依存度が高くなります。
    ノートパソコンとデスクトップパソコンでテストをした場合、グラフィックカードの速度が3〜5倍遅いだけで、結果が何倍も違ってくることがあるのです。

このような間違いは、誰にでもあることです。

 
Renat Fatkhullin:

はい、そのとおりで正しいです。

詳しいご回答をありがとうございました。結構、そう思っているんですよ。すべてに意味がある。