OnBookEventのサブスクリプションが落ちることがあるのですが、そのようなことはあるのでしょうか? - ページ 14

 
fxsaber:

削除ができない

全チャートを閉じるというのはどうでしょうか。

 
Andrey Barinov:

もし、すべてのチャートが閉じてしまったら?

もちろん、それは何の役にも立たない。

 
Stanislav Korotky:

サービスデスクからの回答によると、カウンターはチャート全体で同じであるべきであり(各シンボルは別)、各MQL開発者は、他のMQL開発者が同じチャートのカウンターを減少させる際に間違えないという事実に頼らざるを得ません。説明はヘルプに追加される予定です。

"溺れる者は救われる"

サービスデスクの答えは、少し違っていた。また、サービスデスクへの依頼は、カウンターに言及するものではありませんでした。

とはいえ、カウンターの扱いは次のビルドで修正される予定です。まさに、先ほど書いた通りです。

購読するとカウンタが追加され、購読を解除するとカウンタが追加されます。カウンターは予定内です。各ツール(どのツールでも購読可能)には、独自のカウンターがあります。このカウンタは、与えられたチャートに接続されたプログラムから発信されたあらゆる商品の購読を数えます。チャートが閉じられると、0でない残りのカウンターはすべて購読を中止します。

 
Slava:

サービスデスクの回答は 少し違っていた。また、サービスデスクへの依頼は、どのカウンターにも関係ないものでした。

ただし、今後のビルドでは、カウンターの動作は修正される予定です。まさに、先ほど書いた通りです。

購読するとカウンタが追加され、購読を解除するとカウンタが追加されます。カウンターは予定内です。各ツール(どのツールでも購読可能)には、独自のカウンターがあります。このカウンタは、与えられたチャートに接続されたプログラムから発信されたあらゆる商品の購読を数えます。チャートが閉じられると、0でない残りのカウンターはすべて購読を中止します。

サービスデスクが言ったことを繰り返していますね。要は、一度購読して退会していない有効なMQLプログラムからの購読を保存する保証はないが、退会する異質なMQLプログラムは存在するということである。カウンターはチャート用で、プログラム用ではないので。少なくとも、そのように聞こえる。

 
fxsaber:

そして、目に見えないインジケーターが「偶然」発動してしまった場合(マーケットプレイスにはあると思います)...。Terminalを再起動するまでは、まだ無駄な大騒ぎをすることになります。

サービスの登場により、さらに緊急性を増しました。

私はずっと前から、SDのCPUマネージャー(スクリプト)のアナログの企画書を書いています。

 

そこで、根拠のない話にならないように、新たに(近日中に)文献を引用します。

Начальное значение счетчика подписок равно нулю. При каждом вызове MarketBookAdd() счетчик подписок для указанного символа на данном графике увеличивается на единицу (символ графика и символ в MarketBookAdd() не обязаны совпадать). При вызове MarketBookRelease() счетчик подписок на указанный символ в пределах графика уменьшается на единицу. Трансляция событий BookEvent по любому символу в пределах графика продолжается до тех пор, пока счетчик подписок по данному символу не станет равным нулю. Поэтому важно, чтобы каждая MQL5-программа, которая содержит вызовы MarketBookAdd(), при завершении своей работы правильно отписывалась от получения событий по каждому использованному символу с помощью MarketBookRelease(). Для этого достаточно, чтобы количество вызовов MarketBookAdd() и  MarketBookRelease() по каждому вызову было четным за всё время жизни MQL5-программы. Использолвание флагов или собственных счетчиков подписок внутри программы позволяет безопасно работать с событиями BookEvent и предотвращает отключение подписок на получение этого события в чужих программах в пределах одного графика.

もし、新たな動作修正が行われるとしたら、このフラグメントはどのように聞こえるでしょうか?黄色くハイライトされた勧告は、他の人のプログラムではその遵守を追跡することができず、エラーの原因となる可能性があります。

 
Slava:

サービスデスクの回答は、ちょっと他愛のないものでした。はい、そしてサービスデスクへのリクエストは、どのカウンターにも触れていません。

ただし、今後のビルドでは、カウンターの動作は修正される予定です。まさに、以前書いた通りです。

購読するとカウンタが追加され、購読を解除するとカウンタが追加されます。カウンターは予定内です。各ツール(どのツールでも購読可能)には、独自のカウンターがあります。このカウンタは、与えられたチャートに接続されたプログラムから発信されたあらゆる商品の購読を数えます。チャートが閉じられると、0でない残りのカウンターはすべて購読を中止します。

新しいビルドを非常に待ち望んでいる(多くのバグが蓄積されている)。