iCustomの詳細説明 - ページ 5

 
William Roeder:
23の 続きと、26の 関数へのカプセル化で、MT4とMT5の両方で動作する構造 体を示しました。(ビルド後の600では、変数名の無効なドット(#29)を変更し、intを 標準の列挙型に変更しました。)
Not compiled, not tested.Not compiled, not tested.

こんにちは、William & Co.です。

同じシンボルと時間枠のインディケータでiCustomを複数回呼び出した場合、インディケータコード全体が繰り返し実行されるのでしょうか、それともMQL4が裏で何か賢いことをして結果のバッファをキャッシュしてくれているのでしょうか?特に重いインジケータでは、後者であることを望みますが...。私の理解では、MQL5はハンドルを使うことでこの状況を改善し、ファイルを開いたり閉じたりするのと同じようにインジケータを扱います。

さらに、EAをプログラミングする際、標準ライブラリから派生したCIndicatorクラスを使用することに興味があります。これは、組み込み関数(iCustom、iMACD、iBandsなど)と比較して、おそらくより大きな制御(および拡張性)を提供し、理論的にはMT4とMT5の両方のプラットフォームで同様のプログラミングセマンティクスを提供すべきであることは言うまでもないでしょう。しかし、私自身はまだ試しておらず、MQL4とMQL5の ソースコードの大きな違い(Include/Indicators/*.mqh)にまだ困惑しています。これらの関数/ライブラリの理解と経験から、長所と短所について洞察していただけないでしょうか。

 
Dima Diall: iCustomを同じシンボルとタイムフレームで複数回呼び出した場合、完全なインジケーターコードが繰り返し実行されるのでしょうか、それともMQL4が裏で何か賢いことをして結果のバッファをキャッシュしているのでしょうか?
  1. 特定のシンボル/TFチャートが存在しない場合、それは目に見えないように作成されます。
  2. 特定のインディケータ/パラメータの組み合わせがシンボル/TFチャートに存在しない場合、目に見えないように追加されます。
  3. その後、要求されたバッファ[index]から読み込まれます。
 
William Roeder:
  1. 特定のシンボル/TFチャートが存在しない場合、それは目に見えないように作成されます。
  2. 特定のインディケータ/パラメータの組み合わせがシンボル/TFチャートに存在しない場合、目に見えないように追加されます。
  3. その後、要求されたバッファ[index]から読み込まれます。

Williamさん、素早い回答をどうもありがとうございます!確かに面白いアプローチですね...。このように目に見えないように作成されたインジケータは、EAが終了したときに自動的に破棄されるのでしょうか?少なくともMQL4ではそうだと思います。おそらくMQL5では、EAが使用しているインジケータハンドルに対して明示的に IndicatorRelease()を呼び出す必要が あるのではないでしょうか?

PS:標準ライブラリの CIndicatorクラスについて何かご経験がおありですか?私はコードサンプルをオンラインで検索しましたが、http://www.mql5.com/en/docs/standardlibrary/technicalindicators/CIndicators/CIndicator(またはビルトインヘルプシステム)のわずかな参考資料以外、あまり見つけることができませんでした。

PPS: このフォーラムでメール通知を有効にする方法はありますか?私は自分のアカウント設定を見て回りましたが、何も見つけることができませんでした。

Documentation on MQL5: Standard Library
Documentation on MQL5: Standard Library
  • www.mql5.com
MQL5 Standard Library is written in MQL5 and is designed to facilitate writing programs (indicators, scripts, experts) for end users. Library provides convenient access to the most of the internal MQL5 functions.
 
  1. 未使用のチャートは10分後にパージされるので、未使用のインジケータもパージされるのではないでしょうか。
  2. MT5を勉強していない。クラス内のコードを見てください。
  3. 意識しているわけではありません。FirefoxとUpdate Scannerアドオンを使っているだけです。