インジケータが破損する - ページ 2

 
jjc:

例えば、現在が午前8時であれば、(a)午前7時のバーが60本前、あるいは(b)午前7時のバーが全く存在しないと仮定するようなコードは一切使用できません。

良い指摘です。私が最初に見たとき、チャートがM1であることを理解していませんでした ... M1のバーが静かな時間、例えば夜間に欠けることはよくあります。
 
RaptorUK:
良い指摘です。最初に見たとき、チャートがM1であることを理解していませんでした。
この例では、ブローカーとの接続が一時的に失われた可能性が高いと思いますが、原理と意味は同じです。
 
jjc:
この例では、ブローカーへの接続が一時的に失われた可能性が高いと思いますが、原理と意味は同じです。
...また、"Move Error "のスクリーンショットでは、M1バーがないように見えるポイントで紫の線が描かれなくなることが注目されます。
 
AnkaSoftware:

うーん、「新しいヒストリカルデータがチャートに追加される」、どうやって?インジケータを起動し、そのまま放置しています。ルックバックは1000本固定です。

インジ

ケータはヒストリカルデータをロードして

いません

開発チームの誰かに見て

もらうことはできますか?あなたは言いました ... " 私は最初の16時間かそこらはうまく動作するインジケータを開発しました" .... 16時間 x 60分 = 960本 ... ルックバックを500本に減らすとどうなりますか?8時間後に問題が発生するのでしょうか?
 

Jic, ご指摘ありがとうございます。

テストは信頼できる接続のCNS VPSサーバーで行っており、テストに使用したデモ口座は IBFXとVantageFXのブローカーです。

私は、毎ティックでRefreshRates()を行い、バーデータにアクセスするために通常のタイムシリーズ関数を使用しています。インジケータを更新するために使用されるコードは、私の以前の投稿に記載されている関数DrawMoveEx.TimeSeriesを参照してください。私は、TimeSeriesが0から'Bars -1'までの欠けたバーを持っていないと信じています。この仮定が正しくない場合は、私に知らせてください。

別のスナップショットを囲んで、正しい時間スケールで、右にスクロールしていない(現在のIBFXデータで)。

あなたはポスト2011.10.07 15:30に同封のExcelファイルを見てする機会を得ましたか?

 

AnkaSoftware:
I believe the TimeSeries does not have missing bars from 0 to 'Bars -1'. Let me know if this assumption is incorrect.

元の「Move Error」のスクリーンショットでは、各X軸マーカー間に16本のバーがあり、自分で数えることができますが、そのうちの1つの期間は16分ではなく21分をカバーしているので、その仮定は確かに間違っているように見えます。RaptorUKが言うように、これはあなたのコードで安全に行うことができる仮定ではありません。1日のうち1分ごとに取引があるとは限りませんし、大型連休以外のGBPUSDで取引がなかったら驚きますが、したがって、1分ごとにM1バーがあるとは限りません。

あなたのスクリーンショットに欠けているバーがあることが明らかであるにもかかわらず、欠けているバーはないと信じているのなら、おそらくその仮定や信念に基づいてコーディングしているのでしょう。最新のスクリーンショットを反証と見なさないのは、(a)スクリーンショットに表示されている期間より前のデータが欠落しており、(b)スクリーンショットに表示されているバーの計算に何らかの影響を及ぼしている可能性があるからです。

最も疑わしいのは、明らかに欠損したバーがある期間中に、元のスクリーンショットで紫の線が止まっていることです。私は、完全なコードを見ることなく、さらにコメントしたり、あなたのスプレッドシートの 分析を行うことができませんでした。

 
AnkaSoftware:

Jic, ご指摘ありがとうございます。

テストは信頼できる接続のCNS VPSサーバーで行っており、テストに使用したデモ口座はIBFXとVantageFXのブローカーです。

私は、毎ティックでRefreshRates()を行い、バーデータにアクセスするために通常のタイムシリーズ関数を使用しています。

おそらく、あなたの問題の原因ではありませんが、. https://docs.mql4.com/series RefreshRatesはこれらの変数のみをリフレッシュします: https://docs.mql4.com/predefined/variables
 
jjc:

元の「Move Error」のスクリーンショットでは、各X軸マーカー間に16本のバーがあり、自分で数えることができますが、そのうちの1つの期間は16分ではなく21分をカバーしているので、その仮定は確かに間違っているように見えます。RaptorUKが言うように、これはあなたのコードで安全に行うことができる仮定ではありません。1日のうち1分ごとに取引があるとは限りませんし、大型連休以外のGBPUSDで取引がなかったら驚きますが、したがって、1分ごとにM1バーがあるとは限りません。

あなたのスクリーンショットに欠けているバーがあることが明らかであるにもかかわらず、欠けているバーはないと信じているのなら、おそらくその仮定や信念に基づいてコーディングしているのでしょう。最新のスクリーンショットを反証と見なさないのは、(a)スクリーンショットに表示されている期間より前のデータが欠落しており、(b)スクリーンショットに表示されているバーの計算に何らかの影響を及ぼしている可能性があるためです。

最も疑わしいのは、明らかに欠損したバーがある期間中に、元のスクリーンショットで紫の線が止まっていることです。私は、完全なコードを見ることなく、これ以上のコメントやあなたのスプレッドシートの分析を行うことができませんでした。

Raptor, "what happens if you reduce your lookback to 500 bars, do you get problems after 8 hrs ?"について調べて、元に戻します。

JIC、この問題は32ビットプラットフォームでは発生しないことに注意してください。以前の投稿でいくつかのコードを提供しました。

 
AnkaSoftware:
私は、TimeSeriesは0から'Bars -1'までの欠落したバーを持たないと信じています。この仮定が正しくない場合は教えてください。

もちろん、0からBars-1まで番号付けされたBarsキャンドルがあります。ArraySize(Close) == Barsは常にあります。

しかし、常にスキップされたバーがあります。金21:59zから次のバーは日22:00zです。週末や休日、アクティビティのない分。

Time[x] == Time[x+1] + 60*Period() it won't be on a skipped barと仮定することはできません。

もし、あなたのインジケータを助けて欲しいのなら、あなたのコードを投稿してください - ここでは心を読む人はいません。

 
AnkaSoftware:

さらに詳しい情報

a) インジケータの破損は、Windows 64ビットプラットフォームでのみ発生します。

b) 破損前と破損後のインジケータ配列のダンプを取りました - 同じものがコメント付きの同封のxlsファイルで利用可能です。

スプレッドシート 内のUnix時間の値を見てください。隣接する値の間のギャップは60、60秒のはずですが、240秒のギャップがいくつかあり、少なくとも1つは120秒のギャップがあります。このコードはM1バーの欠落を処理するように設計されていますか?