022:52:04.765 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:52:04.795 test EURUSD.z,M1: initialized
022:52:04.795 test EURUSD.z,M1: rates_total = 75183022:52:11.902 test EURUSD.z,M1: rates_total = 75184022:52:28.712 test EURUSD.z,M1: uninit reason 9022:52:28.712 test EURUSD.z,M1: OnDeinit сработал 75184022:52:28.832 Custom indicator test EURUSD.z,M1: removed
022:57:10.366 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:57:10.396 test EURUSD.z,M1: initialized
022:57:10.396 test EURUSD.z,M1: rates_total = 75184022:57:14.972 test EURUSD.z,M1: rates_total = 75185022:57:59.167 test EURUSD.z,M1: rates_total = 75190
// Локальное время наверное отстаёт от серверного на несколько секунд. На сервере было уже 58 минут.
022:58:34.237 test EURUSD.z,M1: uninit reason 1022:58:34.237 test EURUSD.z,M1: OnDeinit сработал 75190022:58:34.247 Custom indicator test EURUSD.z,M1: removed
開発者の皆さん、どこかに間違いがあるのではないでしょうか。
ターミナルを閉じて、1分後に開いたときのCommentのスクリーンショットをご覧ください。
初期化された要素の数、およびバッファの1番目、2番目、3番目、4番目の要素が空であること。
インジケータは、0番目のバッファのみをカウントします。では、なぜ2本のロウソクなのか?
開発者の皆さん、どこかに間違いがあるのではないでしょうか。
ターミナルを閉じて、1分後に開いたときのCommentのスクリーンショットをご覧ください。
初期化された要素の数、およびバッファの1番目、2番目、3番目、4番目の要素が空であること。
インジケータは、0番目のバッファのみをカウントします。では、なぜ2本のロウソクなのか?
なぜなら、新しいバーを分析するとき、バーの数を確認するのではなく、時間を確認することに限定するからです。操作中に端末を起動したり、サーバーとの接続が切れたりすると、(全履歴への)欠損バーが来る前にティックが来る。このとき、新しいローソクが作成されますが、端末内の履歴との間にギャップ(欠落した履歴)があるため、サーバーからダウンロードしてその場所に挿入します。新しいバーを開くと、それは消えます。
また、deinitでは、端子を閉じた ときにゼロになるのは問題ないのでしょうか?
Vasily、バーの 数を表示するテストインジケータを実行します。
ログにはこのように出力されます。
これで問題の原因がわかるかも・・・。
わかりやすい答えは、開発者に聞いてください。
ターミナルを閉じたとき、チャートに付属するプログラムではDeInit()関数が実行されますか?
厳密には、そうではありません。
OnDeinit が実行される。DeInitはOnDeinitから明示的に呼び出した場合のみ実行されます。
もし、昔のdeinit関数を参照しているのであれば、関数名は大文字と小文字を区別することも覚えておいてください。つまり、deInitは未知の関数、deinitは初期化時の標準的なエントリポイント(OnDeinitのようなもの)です
また、deinitでは、ターミナルが閉じているときにゼロ調整が行われるのは問題ないのでしょうか?
誰が気にする?ターミナルが閉じられると、これらのバッファは不要になる。なぜなら、プログラムがアンロードされるとき(OnDeinitの直後)に、これらのバッファは直ちに解放されるからである。
タイムフレームを変えるだけでも試してみてください。OnDeinitは動作し、バッファは残りますが(この場合、プログラムのアンロードは起こらないため)、誰もその内容を "前世" から保証することはありません。
ついにドキュメントを読む!https://docs.mql4.com/ru/runtime/running、http s://docs.mql4.com/ru/runtime/event_fire#deinit
誰が気にする?ターミナルを閉じたとき、これらのバッファは不要になります。なぜなら、プログラムがアンロードされるとき、つまり OnDeinit
タイムフレームを変えるだけでも試してみてください。OnDeinitは動作し、バッファは残りますが(この場合、プログラムのアンロードは起こらないため)、誰もその内容を "過去の人生 "から保証するものではありません。
ついにドキュメントを読む!https://docs.mql4.com/ru/runtime/running、http s://docs.mql4.com/ru/runtime/event_fire#deinit
つまり、私の場合、グラフを開き直すとバッファが二分されるのですね。
バッファー分岐がないんですね。
こうして自分でバッファを埋めていくのです。1回目は描くとき、2回目はデータの一部を取得するときです。2回とも同じTime[0]の値で動作させる。
バッファー分割はしていないんですね。
こうして自分でバッファを埋めていくのです。1回目はレンダリング時、2回目はデータ到着時。2回とも同じTime[0]の値で動作させる。
OKです。
英語のヘルプを訂正してください、以上です。
また、英語のヘルプには、ArrayInitializeは 何も返さないと書いてあります。