初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 47

 
リモートエージェントでのビジュアライゼーションは、カテゴリー的に不可能なのでしょうか?それとも、可能なのでしょうか?
 
Dimka-novitsek:
教えてください、リモートエージェントの可視化は、私は、可能ではないのでしょうか?それとも、可能なのでしょうか?

リモートエージェントはプロセスモードであり、ウィンドウ(設定ウィンドウを除く)を持たないため、必要ないので不可能です。

タスクマネージャーを通してのみ見ることができます(ただし、プロセスのみで、何をしているかは見えません)。

 
以下は、私が直接読んだプリントで、出てこないものですが...。それは残念です。一般に、十分に長い時間をかけて最適化を行った結果、灰色の線上に小さな点すらない場合、それは単に良い結果が得られていないことを意味するのだろうか。それから、プリントやビジュアル化も必要ですしかし、なぜ行かないのでしょうか?戦車が行き、船が戦争中で、4ギガのようなメモリと、1375MHzのようなスーパービデオカードで、完全にテストすることができません!!!!せめてゆっくり...。コンピュータは真っ白な画面のまま、そのままノックダウン状態になります。
 
Urain:
リモートエージェントはプロセスモードであり、ウィンドウ(設定ウィンドウ以外)を持っていないので、それは必要ないので不可能です。了解!確かに!?
 
Vladon:
時計は、例えばリソースに直接格納できるのであれば、非標準のフォントを使いたいですね。
セルゲイ
のテキストは、別のttfファイルを持ち歩くのではなく、リソースとして直接ex5に埋め込むことを意味します。

つまり、グラフィカルなビットマップ/キャンバスに描画するためだけのものですか?

フォントは埋め込みませんが、Windows標準のフォントで描画できるようにする予定です。

 
Renat:

グラフィカルなビットマップ/キャンバスでの描画専用ということでしょうか?

いいえ、効率的なラベル描画のためです。問題は、端末がリソースからフォントを取り出して独自に設定できるようにすることです。
 
TheXpert:
いいえ、効率的なラベル描画のためです。問題は、端末がリソースからフォントを取り出して自分でインストールできるようにすることです。
残念ながら、そうではありません。
 
Renat:

では、グラフィカルなビットマップ/キャンバスでの描画専用?

フォントの埋め込みは絶対にしませんが、キャンバスへの描画には通常のWindowsフォントを使用させることができます。

Kanvas向けにGDIを開放するそうですね。それは素晴らしいことです。

が、チャート描画の原理には思想的なレベルの問題があると思うのです。

2つの例で説明しましょう。

キャンバスをよりアクティブに使うためには、フレームチェンジが必要です。しかし、ターミナルでは、オブジェクトはすべての時間枠から隠されるまで描画されません(OBJ_NO_PERIODS)。 このため、まだ描画されていないオブジェクトの位置と サイズを 準備することができないのです。

私はこの話題を、出力される静止テキストのサイズと 出力bmpの サイズの両方について持ち出しました - 答えはこうでした - あなたはwidth=-1で描画し、オブジェクト自体からサイズを尋ねると、あなたは正確に知ることができます。そして、ここに最小限の休止と ChartRedrawを 呼び出す必要性を追加する...。これが松葉づえであることに納得がいくはずです。

そして、1つの静止画やbmpだけでなく、何十もの静止画をふっくらとさせる必要があります。また、アクティビティが多い場合は、レンダリング時のポーズに注意する必要があります。

--------------------

既存のオブジェクトに 代わるユビキタスカンヴァスについては、それは理想郷です。

まともな神経の持ち主なら、10メガバイトのビットマップを描き、2096×1080ピクセルのチャートを斜めに走るためだけにスローダウンさせることはないだろう。


kanvasの開発を全面的に支持します // どんな開発でも支持します。

しかし、既存のオブジェクトは、インタフェースにおけるすべてのビジネスニーズの 95% をカバーしています。 Kanvas は、複雑なビジネス構造の付録です // コホネンマップによって非常によく実証されています。しかし、完全にモノを置き換えることはしたくないという。

( -5% は、座標軸を導入しないための開発者の工夫です。:)// しかし、すでに対話は始まっており、合意形成に至ることを期待しています。)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

2012.10.20 14:21:46 Tester expert file C:\UsersMicha╱AppData╱Roaming╱MetaQuotes╱TerminalⒸFF783873B20D7FA177754FFD85AFB6ⒸMQL5ⒸFinal.ex5 allocate error.EXPENSE

2012.10.20 14:21:31 Core 2 認証 (エージェントビルド695)

2012.10.20 14:21:16 Core 2 から 127.0.0.1:3001 に接続中

2012.10.20 14:11:10 Core 1 OpenCL device: NVIDIA Corporation GeForce 9600 GSO 1GB GPU with OpenCL 1.0 (12 units, 1375 MHz, 2048MB, version 301.42)。

すみません、これって何て書いてあるんですか?エラーになるのは理解できる。何が足りないのか???

一般的に、テストはほぼ完全にハングアップします。シャットダウンしてしまうこともしばしば...。しかし、その同じ夜、非常に活発で美しいゲーム、戦車道、ストーカーなどがあります。!


 
sergeev:

しかし、チャートの描画原理には、思想的な問題があるように思うのです。

kanvasをよりアクティブに使うには、フレームを変更する必要があります。また、ターミナル内のオブジェクトは、すべてのタイムフレームから隠れるまで描画されません(OBJ_NO_PERIODS)。 このため、まだ描画されていないオブジェクトは、位置を 準備したりサイズを 把握したりすることができないのです。

私たちのキャンバスにバックバッファリングの完璧なヒントがあり、画面上のオブジェクトにリンクしていることをご存知でしょうか?

フレームを完璧に、素早く、アーティファクトなく描画することができるのです。OpenCL Testの フレームシーケンス生成に基づくビデオ例を見てみましょう。

素敵な戦術を使う。

  1. チャート上にBitmap Labelグラフィックオブジェクトを作成します。

       string objname ="OpenCL_"+IntegerToString(ChartID());
       string resname ="::Mandelbrot_"+IntegerToString(ChartID());
    //--- creating the object for graphics display
       ObjectCreate(0,objname,OBJ_BITMAP_LABEL,0,0,0);
       ObjectSetInteger(0,objname,OBJPROP_XDISTANCE,4);
       ObjectSetInteger(0,objname,OBJPROP_YDISTANCE,26);
    

  2. メモリ上に空のグラフィカルリソースを作成し、以前に作成したオブジェクトにバインドします。

    //--- create initial empty picture
       uint buf[];
    
       ArrayResize(buf,SIZE_X*SIZE_Y);
       ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
       ObjectSetString(0,objname,OBJPROP_BMPFILE,resname);
    
    ここでマジックが起こるのです。グラフィカルオブジェクトは、グラフィカルリソースへの直接バインディングを受け取ります。そして、このバインディングは、ページングとバックバッファを素早く処理するために特別に作られたものなので、キャッシュを使ったインテリジェントなものとなっています。

  3. これで、画面上のオブジェクトへのバインディングを気にすることなく、簡単にバッファに描画することができるようになりました

    //--- рисуем что хотим в buf
    ....
    
  4. そして、この更新されたビットマップを画面に表示するときです。

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    そのために、リソースを「再構築」し(実際には、すべてのサイズが同じなので、再構築は起こりません)、新しいビットマップをコピーし、このリソースの変更カウンターをインクリメントします。

    グラフィカルオブジェクトobjname自体は、すでにリソースと関連付けられているので、どのような方法でもタッチされないことに注意してください。

    そして、グラフィカルオブジェクトの描画を必要とするChartRedrawを介して、Screen Redrawを呼び出します。ビットマップの変更カウンターを使用して制御するリソースにバインドされています。グラフィカルオブジェクトに保存されたビットマップの変更カウンターがリソースのカウンターと一致しない場合、ビットマップは自動的にグラフィカルオブジェクトにコピーされ、保護された方法で視覚化されます。カウンターが同じであれば、そのまま表示されます。

ここでは、レンダリングフレームを安全に(MQL5と端末のレンダリングシステム自体からの同時アクセスから)、かつ素早く作業するための簡単な方法を紹介します。