エラー、バグ、質問 - ページ 976 1...969970971972973974975976977978979980981982983...3185 新しいコメント Renat Fatkhullin 2013.04.27 11:32 #9751 また、テストを実行し、その結果を書き出す。 Anatoli Kazharski 2013.04.27 11:37 #9752 voix_kas:...不思議なもので、私は逆のイメージを持っています。こんな結果になってしまいました。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム エラー、バグ、質問 レナト, 2013.04.27 13:32 私もテストをして、その結果を書いてみます。 面白いことになりそうです。 Renat Fatkhullin 2013.04.27 11:43 #9753 タグのテスト時には、完全にMQL5系から派生してインターフェースフローで描画されることを、すっかり忘れていました。MQL5では、ラベルの説明文のみ修正されます。ビットマップを描画する場合、すべての描画はMQL5内で行われ、インターフェースフローには非常に高速な1つのBitBltだけが残ります。つまり、マーカーマッピングが全くテストされていないため、テストが完全に間違っているのです。チャートのリフレッシュは非同期コマンドで、インターフェイススレッドにレンダリングの通知を送るだけです。ChartRedrawの コストをかけた画面からもわかるように。 削除済み 2013.04.27 11:46 #9754 Renat: Argb_normalize は、色の正規化に余分なコストがかかるので、使用しない方がよいでしょう。シンプルなものをピュアな色で描くほうがいい。アルファチャンネルには美的な魅力があります。グラフィック/ボールの上にテキストが「透過的に」表示される場合、当然のことながら用途が 分かれることになります。メッセージや統計を表示するだけなら、テキストラベルの方が早い。 コントロール(ボタンなど)を作る場合は、ビットマップ、しかもオプションなしで。そうすれば、アルファチャンネルや透明度を使わずに、矩形領域全体をベタで塗りつぶすことができ、あまりイライラすることもありません。 --- 2013.04.27 11:46 #9755 voix_kas:ChartRedraw()関数の ループからの削除は、テキストラベルのプロパティ変更の「アトミック操作」が端末のビデオエンジンで処理されないため、不正解となります。そう、ビデオエンジンで配列が扱えないのと全く同じです。問題は、ビットマップを変更するのとラベルを変更するのと、どちらが速く動作するかということです。ビットマップロスの作成 - それは確かです。であり、いずれの場合もチャートのレンダリングは議論の余地があり、二次的なものである。結果を考えてみてください。 ラベル交換に1サイクル4秒なんて、ナンセンスなことがおわかりいただけるでしょう? ラベルの変更は、チャートのレンダリングサブシステムに干渉することなく、純粋に変更点のみをチェックする必要があります。でなければ、ビットマップでも同等の数値が表示されるはずです。 --- 2013.04.27 11:53 #9756 Renat:ラベルテストの時は完全にMQL5系から派生してインターフェイススレッドに描画されることをすっかり忘れていました。MQL5では、ラベルの説明文のみ修正されます。ビットマップを描画する場合、すべての作業はMQL5内で行われます。しかし、速度的にはやはりラベルの方がビットマップより速く変化します。GDI機能が遅いから。つまり、マークマッピングは全くテストされていないので、テストが完全に間違っているのです。チャートのリフレッシュは、描画するインターフェーススレッドにのみ通知を送る非同期コマンドです。これは、ChartRedrawのコストをかけたスクリーンショットを見ればわかることです。その通りです。 このようなベンチマークタスクは誰がやるのでしょうか?- ラベル(矩形)の束を使い、ビットマップを使ってグラフ(正弦波など)を描画する。- エクセルテーブル(矩形+テキストラベル)およびビットマップとして描画します。といったオプションで、MTグラフィックスをビットマップに置き換えることができます。1つのビットマップと多くのMT オブジェクトをサポートするためのリソースコストを確認します。+ 充填する領域の大きさに依存する。 Renat Fatkhullin 2013.04.27 11:55 #9757 もう一つ、ラベルテストからわかることは、読み取りラベルのない片方向の書き込み動作が非常に経済的であることです。この場合、1回の書き込みに対するコマンドフローの高速パイパー化は最大となる(この場合、あえて効率的なシステムを使用する)。しかし、実際の業務でよくあることですが、書き込みとオブジェクトデータの読み込みが混在すると、スピードが極端に落ちます。更新:また、マーカーのテスト例では、 重大なエラーが あります- 26ではなく、1つのマーカーに1つの変更のみが行わ れます。出典をご覧ください。 削除済み 2013.04.27 11:55 #9758 Renat:つまり、ラベルマッピングを全くテストしていないため、テストが完全に間違っているのです。セルゲイタグの変更は、チャートレンダリングサブシステムに振り回されることなく、純粋に変更点をテストする必要があります。もちろん、私は反対です。議論:ユーザーにとって、状況の変化(stats)をできるだけ頻繁に、毎回のtickで 見ることが望ましい。したがって、統計情報を更新した後、それらを表示する = ChartRedraw()する必要があります。これはいわば、パフォーマンスの即応性・実用性という意味での話です。真空中の球形ベンチマークについては、これはオプションです。 Renat Fatkhullin 2013.04.27 11:57 #9759 sergeev:が、それでもスピード的にはビットマップよりマークの方が速く変化します。GDI機能が遅いから。 いいえ、ラベルを変更する際にGDIメソッドは呼び出されません。µl5ではラベルのレンダリングが全くできない! 削除済み 2013.04.27 11:58 #9760 Renat:また、ラベルテストの例では 、 26枚ではなく1枚 しか修正されていないという重大なミスが あります。 ソースを見てください。説明文ではなく、指標の値を表示するためのラベルのすべて(半分)で文字が変わっています。スクリプトを実行すると、そのことがわかる。私があなたを理解していないかのどちらかです。特にどのラインのことでしょうか? 1...969970971972973974975976977978979980981982983...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
...
不思議なもので、私は逆のイメージを持っています。
こんな結果になってしまいました。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
エラー、バグ、質問
レナト, 2013.04.27 13:32
私もテストをして、その結果を書いてみます。タグのテスト時には、完全にMQL5系から派生してインターフェースフローで描画されることを、すっかり忘れていました。MQL5では、ラベルの説明文のみ修正されます。
ビットマップを描画する場合、すべての描画はMQL5内で行われ、インターフェースフローには非常に高速な1つのBitBltだけが残ります。
つまり、マーカーマッピングが全くテストされていないため、テストが完全に間違っているのです。チャートのリフレッシュは非同期コマンドで、インターフェイススレッドにレンダリングの通知を送るだけです。ChartRedrawの コストをかけた画面からもわかるように。
Argb_normalize は、色の正規化に余分なコストがかかるので、使用しない方がよいでしょう。シンプルなものをピュアな色で描くほうがいい。
アルファチャンネルには美的な魅力があります。グラフィック/ボールの上にテキストが「透過的に」表示される場合、当然のことながら用途が 分かれることになります。
メッセージや統計を表示するだけなら、テキストラベルの方が早い。 コントロール(ボタンなど)を作る場合は、ビットマップ、しかもオプションなしで。そうすれば、アルファチャンネルや透明度を使わずに、矩形領域全体をベタで塗りつぶすことができ、あまりイライラすることもありません。
ChartRedraw()関数の ループからの削除は、テキストラベルのプロパティ変更の「アトミック操作」が端末のビデオエンジンで処理されないため、不正解となります。
そう、ビデオエンジンで配列が扱えないのと全く同じです。
問題は、ビットマップを変更するのとラベルを変更するのと、どちらが速く動作するかということです。
ビットマップロスの作成 - それは確かです。
であり、いずれの場合もチャートのレンダリングは議論の余地があり、二次的なものである。
結果を考えてみてください。 ラベル交換に1サイクル4秒なんて、ナンセンスなことがおわかりいただけるでしょう?
ラベルの変更は、チャートのレンダリングサブシステムに干渉することなく、純粋に変更点のみをチェックする必要があります。
でなければ、ビットマップでも同等の数値が表示されるはずです。
ラベルテストの時は完全にMQL5系から派生してインターフェイススレッドに描画されることをすっかり忘れていました。MQL5では、ラベルの説明文のみ修正されます。
ビットマップを描画する場合、すべての作業はMQL5内で行われます。
しかし、速度的にはやはりラベルの方がビットマップより速く変化します。GDI機能が遅いから。
つまり、マークマッピングは全くテストされていないので、テストが完全に間違っているのです。チャートのリフレッシュは、描画するインターフェーススレッドにのみ通知を送る非同期コマンドです。これは、ChartRedrawのコストをかけたスクリーンショットを見ればわかることです。
その通りです。
このようなベンチマークタスクは誰がやるのでしょうか?
- ラベル(矩形)の束を使い、ビットマップを使ってグラフ(正弦波など)を描画する。
- エクセルテーブル(矩形+テキストラベル)およびビットマップとして描画します。
といったオプションで、MTグラフィックスをビットマップに置き換えることができます。
1つのビットマップと多くのMT オブジェクトをサポートするためのリソースコストを確認します。+ 充填する領域の大きさに依存する。
もう一つ、ラベルテストからわかることは、読み取りラベルのない片方向の書き込み動作が非常に経済的であることです。この場合、1回の書き込みに対するコマンドフローの高速パイパー化は最大となる(この場合、あえて効率的なシステムを使用する)。
しかし、実際の業務でよくあることですが、書き込みとオブジェクトデータの読み込みが混在すると、スピードが極端に落ちます。
更新:また、マーカーのテスト例では、 重大なエラーが あります- 26ではなく、1つのマーカーに1つの変更のみが行わ れます。出典をご覧ください。
つまり、ラベルマッピングを全くテストしていないため、テストが完全に間違っているのです。
タグの変更は、チャートレンダリングサブシステムに振り回されることなく、純粋に変更点をテストする必要があります。
もちろん、私は反対です。議論:ユーザーにとって、状況の変化(stats)をできるだけ頻繁に、毎回のtickで 見ることが望ましい。したがって、統計情報を更新した後、それらを表示する = ChartRedraw()する必要があります。
これはいわば、パフォーマンスの即応性・実用性という意味での話です。
真空中の球形ベンチマークについては、これはオプションです。
が、それでもスピード的にはビットマップよりマークの方が速く変化します。GDI機能が遅いから。
また、ラベルテストの例では 、 26枚ではなく1枚 しか修正されていないという重大なミスが あります。 ソースを見てください。
説明文ではなく、指標の値を表示するためのラベルのすべて(半分)で文字が変わっています。スクリプトを実行すると、そのことがわかる。
私があなたを理解していないかのどちらかです。特にどのラインのことでしょうか?