DirectX - ページ 7

 
Aleksey Vyazmikin:

かわいい。取引所を開くときのCPU負荷はどうなんだろう、マーケットを入れればSiで。

マーケットでのオープンポジションを グラフィカルに表示することはできますか?これが標準のものでは寂しい。

前の図ではオープンポジションが赤の枠で表示されていますが、次の図ではプラス側に表示されています。


 

オール・オン・ワン・キャンバス

 
Rafil Nurmukhametov:

前の写真ではオープンポジションが見えますが、価格の枠はマゼンタ色で、ポジションはマイナス、下の写真ではポジションはプラスです。


単純に更新レートを1秒間に10回以下に制限するのはどうでしょうか。ラグがあると、トレーディングパネルの縮みにつながるのでは?

ポジションの状態表示が見えるので、快適そうですね~。

 
Aleksey Vyazmikin:

単純にリフレッシュレートを1秒間に10回以下に制限するのはどうでしょうか?ブレーキをかけると、トレーディングパネルがフリーズする--違うか?

...

Rafilの実装が具体的にどうなっているかは分かりませんが、セルをカンヴァス全体とは別に再描画すれば、負荷の問題は解決するのではないでしょうか。

そのためには

1.各セルは、上部にテキストがある独立した矩形ラベルで、配列の中で独自の座標と寸法を持っている必要があります。

2.値の変更イベントでは、まずその矩形(背景)が再描画され、次にテキストが描画されます。再描画の面積はキャンバス全体の面積の数十分の一なので、負荷が数十%下がります。

 
Реter Konow:

Rafilの実装がどうなっているかはよく知らないが、セルをキャンバス全体とは別に再描画すれば、負荷の問題は解決するはずだ。

そのためには

1.各セルは、上部にテキストがある独立した長方形のラベルで、配列の中で独自の座標と寸法を持っている必要があります。

2.値の変更イベントでは、まずその矩形(背景)が再描画され、次にテキストが描画されます。再描画の面積はキャンバス全体の面積の数十分の一なので、負荷は数十分の一に軽減されます。

グラスの本質は、価格が動くと全体として再描画しなければならないのですが、可視化の左の部分、そうですね、オプションもあるかもしれませんが、クラスタオブジェクト(ローソク足?)が別に描かれていて、新しい情報が来たときだけ再描画されるのだと思います。

 
Aleksey Vyazmikin:

グラスの本質は、価格が動くと全体が描き直さ れることですが、ビジュアライズの左の部分、たしかにオプションはあるかもしれませんが、別にクラスタオブジェクト(キャンドル?)が描かれていて、新しい情報が入ってきたときだけ描き直されるのではと思います。

必ずしもそうではありません。市場の価格は一度に変化せず、定期的に休止しているセルもある。キャンバス全体を再描画する意味はありません。

左部も同様です。とはいえ、どのみちそこに重い荷物はないのですが。チャートのスクロール上と現在のバー上だけなら。しかし、それは大したことではありません。

 
Реter Konow:

必ずしもそうとは限りません。値段は一度に変わらないし、たまに休んでいるセルもある。キャンバス全体を再描画する意味はありません。

その必要はないのですが、価格が動き、その結果、セルの値が変化するのです。もうひとつは、価格で矩形の座標を変更した場合ですが、カンヴァス内では同じ描画になっていると思います。

 
Aleksey Vyazmikin:

必ずしもそうではありませんが、価格が動いているということは、セルの中の価値が変化しているということです。他にどのような方法があるのでしょうか?もうひとつは、価格で矩形の座標を変更した場合ですが、これもキャンバス内の描画だと思うのです。

価格が動くとガラスが集中 し、再描画が必要になる。誰もそのことに異論はない。再描画の面積のことです。

多くのセルはアイドル状態であり、カップイベントのたびに値が変化することはない。例えば、いくつかのセルだけ指値が変わり、他のセルの価格や数量は変わらないことがあります。この場合、キャンバス全体を再描画するのはリソースの無駄遣いです。新しい値の到着を契機に、セル内の変化を制御し、個別に描画する必要がある。

このシンプルな方法で、負荷を何倍にも減らすことができるのです。

また、セルに値を出力する頻度を減らすことができます。

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Для биржевых инструментов доступно окно "Стакан цен", в котором можно посмотреть текущие заявки на покупку и продажу. Для каждой заявки указано желаемое направление торговой операции, требуемый объем и запрашиваемая цена. Для получения информации...
 
Реter Konow:

価格が動き、ガラスが集中 し、再描画が必要になる。誰もそんなことは主張していない。再描画の面積のことです。

多くのセルはアイドル状態であり、カップイベントのたびに値が変化することはない。例えば、いくつかのセルだけ指値が変わり、他のセルの価格や数量が変わらないことがあります。この場合、キャンバス全体を再描画するのはリソースの無駄遣いです。 新しい値の到着を契機に、セル内の変化を制御し、個別に描画する必要がある。

このシンプルな方法で、負荷を何倍にも減らすことができるのです。

また、セルに値を出力する頻度を減らすことができます。

そうですね......お考えはわかりますが、価格と出来高の変化情報は、マーケットオープンで同期することが多い(という前提)。

自分のカップを作りたかったと記憶していますが、結果はどうですか?

 
Aleksey Vyazmikin:

そうですね......お考えはわかりますが、価格と出来高の変化に関する情報は、市場のオープニングで同期してくることがよくあります。

マーケットカップの自作を希望されていたようですが、成果はありましたか?

昨日は、ウィンドウ全体のキャンバスとは別にセルを再描画するマーケットグラスの例を作りました- https://www.mql5.com/ru/forum/333652/page4.

私は、すべてのセルを40fpsで再描画した場合、セルを個別に再描画することで負荷を20%以内に抑えることができることを発見しました(ビデオ録画のため、ビデオはもっと表示されます)。この方法による通常のタンブラーの動特性は、おおよそ5〜10%の負荷となります。

大きな面積(~500*500 px)を間髪入れずに高速で再描画した場合のみ負荷が高くなります(~40+fps)。再描画領域の遅延や縮小は、負荷を2分の1に軽減します。

DirectX
DirectX
  • 2020.03.13
  • www.mql5.com
Привет, кто-нибудь уже разобрался с directx, там есть DirectCompute...