イベントの流れ イベントの制御やアイドリングストップはどのように行うのですか?(+解決済み) - ページ 3

 

Yedelkin:

同様に、mql5-programのキューにすでにイベント ChartEventが あるか、そのようなイベントが処理されている場合 、そのタイプの新しいイベントはキューに入れられません"。

うーん、これは本当にまずい。理論的には、例えばインジケータとExpert Advisorが独立してイベントを使用する場合、両方のケースでスキップが発生する可能性があることを意味します。

そうすると、データを確実に転送する方法としてイベントを利用する意味がありません。

可哀想に。

 
sergeev:

カスタム イベントがキューから溢れないよう、おおよそどの程度の頻度で送信するべきか」というご質問ですが

1ページ目の私の答えは「OnChartEventの呼び出しの頻度で」です。

つまり、1つのイベントは1つのOnChartEventです。 間に2つ以上のイベントがあってはいけません。

計算方法は以上です。

もう一度、最初のページを読んでみてください。ユーザーイベントの代わりに端末イベントを処理する場合、ユーザーイベントの蓄積を回避する方法を示しました。というくらいにシンプルです。

もう一度、丁寧に :)あなたは自分の問題を解決し、私は別のプランで 私の問題を解決しようとしています。ディスカッションを読んでいても、自分の疑問に対する答えが見つからなかった。あなたはまだ 私の主な質問(メモリ使用量について)に答えていません(もしあなたがそれを選択するならば)。

説明しよう。私は、「ある関数を更新するが、MQLが提案するタイマーよりも速く」というタスクを持っていません。最後に提案された、こんな気の利いた方法ならなおさらだ。複数のチャートからのカスタムイベントが、Expert Advisorとイベントハンドラ関数を含む別のチャートに頻度を変えて殺到します。したがって、あなたの狭い範囲でのタスクの結果OnChartEvent 内のEventChartCustom)は、 カスタムイベントを扱う私のスキームには全く合い ません。

 

Yedelkin:

明確にすること。ある関数をタイマーでMQLが提案するよりも速く更新させる」というタスクがないのです。特に、最後に提案されたような巧妙な方法ではありません。複数のチャートからのカスタムイベントが、Expert Advisorとイベントハンドラ関数を含む別のチャートに頻度を変えて殺到します。したがって、あなたの狭い範囲でのタスクの結果OnChartEvent 内のEventChartCustom)は、 カスタムイベントを扱う私のスキームと全く合いません

複雑ではなく、シンプルなのです。理解できなくても、それは私の問題ではありません。

OnChartEventの 中ではなく、 コードの あちこちに散らばっているのです。 その操作に、狭い制約を勝手に作っているのです。

同様に、mql5-programのキューにすでにイベントChartEventが あるか、そのようなイベントが処理されている場合、このタイプの新しいイベントはキューに配置されません。

これは、バグかドキュメントのミスか、条件が足りないかのどちらかです。

イベントは正常にすべてキューイングされ、イベントが破棄されることはない。そうでなければ、私の話題は出てこないでしょう。

私の他の問題を 解決したいのですが、
イベントキューのオーバーフローはRAMサイズにどのような影響を与えるのでしょうか? イベントキューがオーバーフローしていることが判明した場合、オーバーフローしたイベントはどこに行くのでしょうか?

レナートとロッシュはすでにこの質問に答えているのでしょうか?
 
Rosh:

イベントが破棄された場合、それは単にキューに入れられないだけである。メモリが増えない

ふぅ〜。それが一番理解したかったことです。また、TheXpert はキュー自体に数MBしか使っていないと言っているので、メモリリークは別のところにあると思われます......。証明されない限り、その発言に従おう。

ロッシュ

このような問題が発生した場合、事態は非常にまずいことになります。溢れかえるイベントキューは、メモリの問題を探す最後の場所だと思うんです。

そうですね、できる限りあらゆるところを探そうとしています。

しかし、失格となった3人のエキスパートのうち、少なくとも2人はカスタムイベントストリームで作業していたことに注意してください(3人目の作者はリクエストに応えていません)。Lizar(カスタムイベントとの連携)は、メモリ使用量も多い。また、tol64は、ユーザーイベントの使用頻度が1分間に1回以下なので、メモリ消費量が極めて少ないんです、私の認識では。つまり、カスタムイベントの概念をやみくもに実装することの効率性を疑わざるを得ないことがわかります。 徹底的に答えを出すまで。

 
Yedelkin:

しかし、失格となった3つのEAのうち、少なくとも2つはカスタムイベントの ストリームで動作していたことに注意してください(3つ目の作者はリクエストに応えていません)。Lizar(カスタムイベントとの連携)もメモリ消費量が多い。また、tol64は、ユーザーイベントの使用頻度が1分間に1回以下なので、メモリ消費量が極めて少ないんです、私の認識では。つまり、カスタムイベントという概念をやみくもに実装することの効率性を、網羅的な答えが出るまで疑わなければならないことがわかります。

そして忘れてはならないのは、EAが多くのツールやタイムフレームで実行されたインジケーターからイベントを取得していることだ、私の記憶が正しければ全部で80個ほどあるのだが。各インジケータは、インジケータ・バッファのリソースを消費します、そこにドッグが埋まっているのです。
 
sergeev:

複雑ではなく、シンプルなのです。理解できなくても、私には関係ない。

それを理解した上で、「複雑だ」と書きました。そうでなければ、手を出しません。

sergeev:

OnChartEventの 中ではなく、全体のコードに あります。 狭い範囲での制約を自分で作っている。それが2つ。

そうそう、EventChartCustomは OnChartEventの 中ではなく、 外側にあるような ものです。 今度は自分のコードを見てみてください。

void OnChartEvent(int iview, int id, long lparam, double dparam, string sparam)
{
    if (id==CHARTEVENT_CUSTOM+VM_IDLE)
    {
      ... 
    }
    EventChartCustom(m_chart, VM_IDLE, (long)event_idle, 0, ""); // отправили событие с указанием последнего счетчика
}

このコードでは明らかにEventChartCustomはOnChartEventの 中にありませんし、私は非常に間違っています :) 。

sergeev:

それは、間違っているか、バグか、文書の誤りか、あるいは控えめな状態です。

成功したイベントはすべてキューに残り、イベントが破棄されることはない。そうでなければ、私の話題は出てこないでしょう。

少なくとももう1つのバージョンがあります。あなたの特定のケースでは、キューは単にオーバーフローしないので(コードの効率化のため)、イベントを破棄する事実はありません。

 
Yedelkin:

あなたのケースでは、キューは単にオーバーフローしないので(コードの効率化のため)、イベントを破棄した形跡がないのです。

以下は、同一のイベントを破棄しないことを実証するために始めた私の特別なケースです。

https://www.mql5.com/ru/forum/5091#comment_112780

そこに、なぜオーバーフローが起こるのかを書きました。

そうそう、EventChartCustomはOnChartEventの 中ではなく、 外側にあるような ものです。 今度は自分のコードを見てみてください。

根こそぎ取る!問題とその解決策のデモをお見せしました。 このEventChartの呼び出しは、コードの中のどこにでも可能です。

 
Rosh:
そして忘れてはならないのは、Expert Advisorは、多くのツールやタイムフレームで実行されるインジケータ、私の記憶が正しければ合計80個ほどのインジケータからイベントを受け取っていたという事実です。各インジケータは、インジケータ・バッファの リソースを消費し、そこにドッグが存在します。
日本語の話ですか?私の場合、もっと簡単です。1つのタイムフレームで6つのインストルメントで8または15の計算インジケータバッファを持つ1つのユニバーサルインジケータが動作しています。つまり、6つの指標しかないのです。また、理論的には、このようなスキームで1週間に2GBを消費することができるのでしょうか?
 
Yedelkin:
日本人のことを言ってるのか?私の場合はもっと単純で、8個または15個の計算インジケータバッファを持つ1つのユニバーサルインジケータが、1つのタイムフレームで6個のインストルメントで動作しています。つまり、6つの指標しかないのです。理論的には、このようなスキームで1週間に2GBを消費することができるのでしょうか?
補助インジケーターのメモリ消費 量の削減の記事を読むと、役に立つかもしれません。
 
Rosh:
補助インジケーターのメモリ消費 量の削減の記事を読むと、役に立つかもしれません。

ありがとうございます、すでにすべてそこに最適化されています :)この記事を意識したものも含めて、私の記憶では。次の悟りの境地まで待たねばなりませんね :)

Expert Advisor とインジケータがカスタムイベントで連動する場合、別々に判断することは可能でしょうか?