エラー、バグ、質問 - ページ 1547

 
Комбинатор:
このように計算されたデータを、端末ですぐに再描画するにはどうしたらいいでしょうか?

OnCalculateにないバッファからデータを描画 します。

OnCalculateの最小描画時間は1分です。

ティックインジケーターは1ティックごとに描画

 
comp:
そうではないようです。

ChartRedrawは4で100%やってくれるけど。

そして、5でもOKであることが判明 したのです。

そのため、ChartRedrawはどちらのプラットフォームでも問題なく動作します。

 

CHARTEVENT_CHART_CHANGEが届くと、時々1秒/1晩続く計算をするんだ。計算中に、例えばチャートが移動された場合、計算後に CHARTEVENT_CHART_CHANGE がキューから再度呼び出されます。

イベントキューに何かあることを計算中に知ることは可能でしょうか?それなら、もう関係ない計算をして、それを中断して新しい計算を始めることはできないのでしょうか?

例えば、非常に重い計算部分でもIsStopped()の チェックがあれば、Expert Advisorの終了は計算を待つことなく瞬時に行われるでしょう。

ここでは、似たようなことを、closeのイベントではなく、ChartEventで行うことにします。

 
comp:

CHARTEVENT_CHART_CHANGEが届くと、時々1秒/1晩続く計算をするんだ。計算中に、例えばチャートが移動された場合、計算後に CHARTEVENT_CHART_CHANGE がキューから再度呼び出されます。

イベントキューに何かあることを計算中に知ることは可能でしょうか?それなら、もう関係ない計算をして、それを中断して新しい計算を始めることはできないのでしょうか?

例えば、非常に重い計算部分でもIsStopped()のチェックがあれば、Expert Advisorの終了は計算を待つことなく瞬時に行われるでしょう。

ここでは、似たようなことを、closeのイベントではなく、ChartEventで行うことにします。


第二の処理スレッドを行う(例えばmsタイマーのような形で)

で、まさにそこで計算を行う。ただし、カウンタフラグ==XXX が設定されており、CHARTEVENT_CHART_CHANGE でインクリメントされることが条件。

このように、ChartEventのキュー全体を素早く取得し、フラグを設定し、これと並行してタイマーがこのフラグをチェックし、計算を行います。

---

同じタイマーで、フラグカウンターの値を確認します。現在のカウンターの値が計算を開始した値よりも大きい場合に、計算を停止することが可能です。 これは、IsNewChangedの一種です。

 
o_O:

そこで、ChartEventのキュー全体を素早く調べ、フラグを設定し、並行して タイマーがそのフラグをプルして計算するのです。

ChartEventと Timerのイベントは並行して動作しているということでしょうか?
 

サービスデスクはこのように表明しています。

SetIndexBuffer делается однократно на вызове OnInit

SetIndexBufferを OnInitの中ではなく、何度も使っている人はいますか?MT4では、いつも使っています。MT5では、残念ながらこれができません。

 
comp:
ChartEventと Timerのイベントは並行して動作しているということでしょうか?

を順次実行しても、少なくともこれを使用することは妨げられません。

の場合、瞬時にChartEvent全体を取り除き、1つのオーダーだけを置く。

---

タイマーとチャートのイベントの並列性については、適切な質問である。

サービスデスクに聞く

 
o_O:

を順次実行しても、少なくともこれを使用することは妨げられません。

の場合、瞬時にChartEvent全体を取り除き、1つのオーダーだけを置く。

---

タイマーとチャートのイベントの並列性については、適切な質問である。

サービスデスクにお問い合わせください。

誰もドキュメントを 読んでいない...。

クライアント端末は、生成されたイベントを対応するオープンチャートに送信します。また、チャート(チャートイベント)やmql5プログラム(カスタムイベント)によってもイベントを発生させることができます。チャートのCHART_EVENT_OBJECT_CREATE 及びCHART_EVENT_OBJECT_DELETE プロパティを設定することで、チャート上のグラフィカル オブジェクトの作成及び削除のイベント生成を有効/無効にすることができます。各mql5-programと各チャートは独自のイベントキューを持ち、そこにすべての新しいイベントが保存されます。

プログラムは、実行中のチャートからのイベントのみを受信します。すべてのイベントは、受信した順に順次処理 されます。キューに既にイベントNewTickが ある場合、またはこのイベントが処理中の場合、新しいイベントNewTickはmql5-programのキューに配置されない。同様に、mql5-programのキューがすでにChartEvent イベントを含んでいるか、そのようなイベントが処理されている場合、このタイプの新しいイベントはキューに入れられません。タイマーイベントも同じ方式で処理されます。キューにタイマー イベントがある場合、またはタイマーイベントがすでに処理されている場合、新しいタイマーイベントはキューに入れられません。

 
Slawa:

誰もドキュメントを 読んでいない...。

そうすれば、イベントによる計算の中断はありません。
 
Slawa:

誰もドキュメントを 読まないし...。

お久しぶりです