アプローチは理解できる。しかし、タスクの関連性が混乱している。
64ビットシステムは膨大な量のRAMをサポートしているが、このタスクの関連性は薄い。3ギガバイトの32ビットでさえ、あなたが節約しようとしているようなメモリサイズをかなり引き出せる。結局のところ、どう考えても、新しいインジケーターをロードするときにメモリは直線的に増加する。
さて、このタスクが関連性があると仮定しよう(それを気にする人がいることには同意する)。しかし考えてみてほしい。メモリ節約というタスクは、パフォーマンスというタスクと真っ向から対立しているのだ。
だから、この点にも注意を払うべきだ。
私の目から見る限り、MQはパフォーマンスのために戦っており、そこにすべての努力が集中している。
非描画インジケータのメモリリソースを節約する必要がある場合は、インジケータのコードをExpert Advisorに転送してください。ここで、割り当てられたメモリを完全に制御することができます。同時に、同じ種類のデータの 受信を節約することができます。多くのインジケータは、それぞれ独自の処理を行うために同じデータを要求します。一度データを受信すれば、次回からはそのデータを処理する必要はありません。
次に、処理速度とメモリサイズの両方を組み合わせてみましょう。ほとんどの非描画インジケータは、最後のバーの計算に従事し、これは全体の配列の再計算をブロックするビルトインメカニズムによって示されています。Expert Advisorでは、154個のメモリセルを割り当てることが可能であることがわかりま した(例えば、153周期のマスクの計算のため)。
しかし、Expert Advisorでは、計算を並列化する可能性が失われ、これはパフォーマンスへの直接的な打撃となります。実際、インジケーターは並列計算のためにメモリーを消費します。結局のところ、各インジケーターは独自のスレッドで動作し、このスレッドはソースデータの独自のインスタンスを持っていなければなりません。

- www.mql5.com
パフォーマンスが最優先であり、メモリを節約する意味はない(もちろん、1Gb以上使う場合は別だが、それはありえない)。
そのアプローチは理解できる。しかし、その作業の緊急性が分かりにくい。
実は、この記事を書こうと思ったのは、ある複合インジケーターを書いたある人から、このインジケーターがいくつかのペアにインストールされていないとクレームを受けたことがきっかけだった。調べてみると、非常に永続的なインジケーターがあり、その多くがターミナルに収まらないことが判明した(つまり、問題はペアにあるのではなく、このペアの前に、同じ永続的なインジケーターでさらに何十個もオープンされていることにあった)。そのインジケータは、記事のテスト・インジケータよりも2倍多く消費した。
3GBの32ビットでさえ、このようなメモリ・サイズを消費します。
多くのペアで取引する場合は、そうではありません。
ちなみに、ターミナルは2Gb以上のメモリを割り当てられません(RAM+仮想メモリの合計)。私の実験では、このマークで終了した。
もちろん、64ビットではこの問題は存在しないはずだ。
よし、このタスクが関連していると仮定しよう(それを気にする人がいることには同意する)。しかし、考えてみてほしい。メモリ節約というタスクは、パフォーマンスというタスクと正反対なのだ。
必ずしもそうではない。この記事では、ほとんどの方法はパフォーマンスを低下させない。
インジケーターから最後のバーのみを要求するExpert Advisorは、記事で考慮されているプログラムとは異なるクラスのプログラムです。また、どちらか一方を他方に置き換えることが常に可能とは限りません。
。
並列計算に関する記事の 中に興味深い表があり、"2 indicators "というキーワードで見つけることができます。
インジケーターの問題点は、それぞれのインジケーターが独自のスレッドで動作し、動作するために必要なデータをすべてスレッド自体に保存しなければならないことである。
スレッド間のデータはCopyBuffer()によってコピーされる。しかし、ここで問題が発生します。スレッドからデータを取得することはできますが、そこでデータを転送することはできません。そのため、1つのインジケータの複数のインスタンスが同じ前処理済みデータを受け取るようなモゴステージ・インジケータを構築することはできません。しかし、この平面にこそ、計算を最適化する 大きなチャンスが潜んでいます。
MQがこの問題を解決すれば、インジケーターを使った作業はより便利で柔軟なものになると思います。現在、データは外部パラメータとして、スレッドの開始時にのみ渡すことができます。

- 2010.01.12
- MetaQuotes Software Corp.
- www.mql5.com
とても役に立つ
この主旨を正しく理解すると、疑問が出てきます:
MT5の 標準的なインジケーターは、なぜ「クラス」として設計されていないのでしょうか?
では、なぜマスターウィザードはそのような考えを気にしないのでしょうか?

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 予備インディケータによるメモリ消費削減 はパブリッシュされました:
作者: Andrew