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

 
Nikolai Semko:
どの欠点を言っているのですか?
資源原単位について?
誤解を招く表現でしたね。
コメントも 同じように多くのリソースを消費します。
ウィンドウ全体のテキストを含むキャンバスを生成し、表示するのに1〜3ミリ秒かかります。
MT5では、コメントの出力に若干時間がかかります。1秒間に30回テキスト情報を更新するのであれば、ラグを感じることはないでしょう。

Kanvasが遅いかもしれない理由を詳しく調べたわけではありませんが、同じような理由だと思います...。配列内の画素を選択的に変更して再描画コマンドを与えることができない。まず配列に変更を加え、ResourceCreateするのです。これは、ピクセルを一つずつコピーして、同様に、一つずつチャートにして、さらにチャートを更新(ChartRedraw)するものです。どれだけ無駄な操作をしているのか...。これでは、有用なデータ処理に追われているプロセッサの負荷が、いずれにせよ死んでしまう。ラベルは少なくとも画素数が少ない(その分、出力が速い)のですが。そして、その出力機構は、完全にチャートの中にある( 配列を 渡す必要がない)。アルゴリズムは完全には わからないものの、より高速になったと思います。以前、キャンバスをベースにテキスト出力パネルを作ったことがあります。テスターでこのようなパネルを使ってExpert Advisorを目視でテストしたところ、あまり印象に残らない結果となりました。EA自身の負荷に加え、パネルの再描画がかなり煩わしかった。パネルは常に1ティックごとに更新(ResourceCreate -ChartRedraw)されています。ラベルではそのような速度低下は感じられませんでしたが。

 

私が馬鹿なのか、それともスキーが動いていないのか? mt4 build 1320

double LotStep = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
double Lot=0.7;
PrintFormat("LotStep %f, lot %f, %f, %f %f",LotStep,Lot,Lot/LotStep,MathFloor(Lot/LotStep),(int)double(Lot/LotStep));
//Print
//2021.03.07 23:42:46.507	2021.02.25 07:36:40  EA_CCIcross_v1.0 AUDJPY,M5: LotStep 0.010000, lot 0.070000, 7.000000, 6.000000 6.000000

p/s// 7が6.9999であることは理解できますが、ではなぜ0.7を0.1で割ると6.9999ではなく7.000と出力されるのか、誤解を招きそうです。
 
Mihail Matkovskij:

Kanvasが遅いかもしれない理由を詳しく調べてはいないのですが、同じ理由だと思います...。配列内の画素を選択的に変更して再描画コマンドを与えることはできない。まず配列に変更を加え、ResourceCreateするのです。これは、ピクセルを一つずつコピーして、同様に、一つずつチャートにして、さらにチャートを更新(ChartRedraw)するものです。どれだけ無駄な操作をしているのか...。これは、CPUが有用なデータ処理に忙殺されているときに、いずれにせよCPUの負荷を殺すことになる。ラベルは少なくとも画素数が少ない(その分、出力が速い)のですが。そして、その出力機構は完全にチャートの中にある( 配列を 渡す必要がない)。アルゴリズムは完全には わからないものの、より高速になったと思います。以前、キャンバスをベースにテキスト出力パネルを作ったことがあります。テスターでこのようなパネルを使ってExpert Advisorを目視でテストしたところ、あまり印象に残らない結果となりました。EA自身の負荷に加え、パネルの再描画がかなり煩わしかった。パネルは常に1ティックごとに更新(ResourceCreate -ChartRedraw)されています。同時に、レーベルでこのような速度低下を感じたことはありません。

あくまでも、あなたの想像です。
もちろん無料のものはありませんが、MT5でテキストを表示するにはkanvasがベースであり、コメントやラベルはkanvasの二の次であるため、kanvasが最も手っ取り早い方法です。
そんなにCPUのリソースを欲張るなら、アンプリンターを使えよ...。
 
Mihail Matkovskij :

Kanvasが遅いかもしれない理由を詳しく調べてはいないのですが、同じ理由だと思います...。配列内の画素を選択的に変更して再描画コマンドを与えることはできない。まず配列に変更を加え、ResourceCreateするのです。これは、ピクセルを一つずつコピーして、同様に、一つずつチャートにして、さらにチャートを更新(ChartRedraw)するものです。どれだけ無駄な操作をしているのか...。これでは、有用なデータ処理に追われているプロセッサの負荷が、いずれにせよ死んでしまう。ラベルは少なくとも画素数が少ない(その分、出力が速い)のですが。そして、その出力機構は完全にチャートの中にある( 配列を 渡す必要がない)。アルゴリズムは完全には わからないものの、より高速になったと思います。以前、キャンバスをベースにテキスト出力パネルを作ったことがあります。テスターでこのようなパネルを使ってEAを目視でテストしたところ、あまり印象に残らない結果でした。EA自身の負荷に加え、パネルの再描画がかなり煩わしかった。各ティックで一定の更新(ResourceCreate -ChartRedraw)があります。ラベルではそのような速度低下は感じられませんでした。

知らないことは話さないでください。ニコライ・セムコ 氏の言うとおりで、Canvasは問題や欠陥なく高速に動作します。
 

イリヤス

コンパイラのバグ?2817を構築。

   const ushort AN_USHORT_CONSTANT = 1;
//---
   ushort avariable = 1;

   switch(avariable)
     {
      case AN_USHORT_CONSTANT :
         Print("Compiler bug ?");
         break;
     }


 
Nikolai Semko:
としか思えません。
もちろん、無料のものはありませんが、MT5でテキストを表示するには、kanvasが基本で、コメントやラベルはkanvasの二の次なので、kanvasが一番手っ取り早い方法です。
CPUリソースに貪欲な方はプライマーをお使いください...。

canva自体がOBJ_BITMAP_LABELのアドオンで、ラベルがOBJ_LABELなのに、どうしてラベルがcanvaベースだとわかったのでしょうか?

このフォーラムでチャットしている間に、私はすでにラベルに、任意の数の行と列を持つ出力パネルのスケッチをしました。また、キャンバスについては、他のアプリケーションで、他のタスクがあります。そして、そこでも非常にうまく機能しています。

Alain Verleyen:
知らないことは話さないでください。@Nikolai Semko の言うとおりで、Canvas は問題や欠陥もなく、すばやく動作します。

では、おそらくすべてを知っているのですね?それから、あなたの知識やMetaTraderのチャートについて読むことができるリンクを共有すると、私もあなたが知っていることを知ることができるかもしれません。:)

 
Alain Verleyen:

イリヤス

コンパイラのバグ?2817を構築。

MQLでは、constは全くconstではありません。実際には、constはマクロを通してのみ書き込む ことができます

//const ushort AN_USHORT_CONSTANT      = 1; //(*)
#define         AN_USHORT_CONSTANT ushort(1) //(**)
void main()
{
        int i[AN_USHORT_CONSTANT];      //(1) нормально
        ushort avariable = 1;
        switch(avariable) {
        case AN_USHORT_CONSTANT:        //(2) нормально
                break;
        }
}
void f( int = AN_USHORT_CONSTANT ) {}   //(3) нормально
enum { e = AN_USHORT_CONSTANT };        //(4) нормально    
 
A100 :

MQLでは、constは全くconstではありません。実際には、constはマクロを通してのみ記述 することができます。

それは間違いです :-D
 
Alain Verleyen:
そう、だからエラーなんです :-D

なお、これは1つのケースではなく、すべての(1)(2)(3)(4)で、(*)ではエラーになるが、(**)ではOKというように設計されているのだそうです。すなわち、定数は実体として欠落している

 
A100 :

なお、これは1つのケースではなく、すべての(1)(2)(3)(4)で、(*)ではエラーになるが、(**)ではOKというように設計されているのだそうです。すなわち、定数は実体として欠落している

知っています。だから、開発者に修正をお願いしているんです。