MQL5で作成されたリソースのライフコンテキストは何ですか?ターミナル全体、"シンボル・タイムフレーム "ストリームやチャートなどの内部コンテナ?ヘルプには書かれていません。
ニコライ・セムコ, 2017.04.16 09:42 AM
もちろん、リソースは最適なソリューションだと思います。なぜなら、それらはglob.ターミナル変数やファイルと違って目に見えないし、高速だからです。また、ファイルだけでなく、配列もリソースを通して転送することができます。また、グローバル変数のようにターミナルに属するのではなく、ウィンドウに属します。さらに、ウィンドウ内のすべての同じインジケーターに対して1つのリソースを作成することができる。
私はそう信じていた。当初は グローバルなものを使っていました。
エキスパート・アドバイザーからインジケーターを作成した場合はどうなるのでしょうか?
うーん...。
興味深い関数のオーバーライド...
どのように機能するのですか?初期化関数を例にしてみましょうか?
つまり...
ライブラリが最初に挿入されるので、コンパイル時にライブラリのOnInit()が初期化関数として登録される。
そして、同期をチェックし、OldOnInit()関数を呼び出します。この関数は何ですか?まだ定義されていません!
嗚呼...。その後、"古い "OnInit()関数が 定義されると、ライブラリのOnInit()によって呼び出されるのと同じOldOnInit()に置き換えられます。
うーん、defineの本来の使い方。私見では、さらなるサポートや識別子の宣言順序を変更する可能性という点で、かなり危険だと思う。(宣言されていない識別子は使えないという印象を持っていた)。しかし、使い方の観点からは、すべてがクリーンで正しい。
私見では、さらなるサポートや識別子の宣言順序を変更する可能性という点で、かなり危険だと思う。
危険な例はまだ見つかっていない。
私の記憶では、#includeが存在し、コードのどこにもユーザーによって呼び出されるものがないようなライブラリーはこれだけだ。
謝罪する。誤解していました。
このようなOnInitで(リソースを削除せずに)空のインジケータを使用した場合:
int OnInit() { uint set[1]; set[0]=3; uint w=1,h=1; if(ResourceReadImage("::Res_name",set,w,h)) Print(「リソースはすでに存在する set[0] = "+DoubleToString(set[0],0)); else { if(ResourceCreate("::Res_name",set,1,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA)) Print("新しいリソースが作成されました"); else Print(「リソースを作成できませんでした。); } return(INIT_SUCCEEDED); }
リソースについて以下の結論が得られます:
1.1.リソースはウィンドウではなくターミナルに属する。したがって、リソース名に例えばウィンドウハンドルを追加するのは合理的である。
2.リソースの寿命は端末が生きている限りであり、端末が再起動されるとリソースは削除される。従って、端末を閉じたとき(理由コードはREASON_CLOSE)に、必要なデータを端末のグローバル変数(またはResourceSaveで ファイル)に保存し、端末を再度ロードしたときに、グローバルPT(またはファイル)の削除に伴い、グローバルPT(またはファイル)からデータを転送して新しいリソースを作成するのが合理的である(そうすれば、端末のグローバル変数は端末を閉じるときと開くときだけ存在することになる)。
一方では、ウィンドウ間のデータ転送や同期など、ターミナル内のあらゆることに興味深い可能性があるため、これは良いことですが、他方では、コードが追加され、やや複雑になります。
検証されていない情報を提供してしまい、再び申し訳ありません。
しかし、これで文書化されていないリソースが明確になりました。ついでに、とても貴重なツールも。
リソースはウィンドウではなく端末に属する。従って、リソース名に例えばウィンドウハンドルを追加するのが合理的である。
return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME));
これ以外には何も必要ないようだ。
ちなみに、ウインドウハンドルがない方が便利な場合もあります。
ZY 更新版にはこの修正が含まれています。
ちなみに、ウインドウ・ハンドルがない方が便利な場面もあるかもしれない。
ええ、私も考えました。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
Init_Sync:
作者: fxsaber