[SERVICE DESK】タイマーでシニアTFの時刻を取得する際にエラーが発生!? - ページ 14

 
今まで何度か走らせていますが。面白いけど、いつもうまくいくとは限らない。接続が間に合わないこともある。
自分には良い縁があるんだ。それが理由かもしれません。
 
しかし、このテストで気づいたのは、そういうことではありません。パスカウントで今動作させても、OnCalculateで 10回パスが出るんですよ 今でも。結局、インジケータ起動時に少し遅延させるのが一番よさそうです。
 
Konstantin Nikitin:
しかし、今回のテストでは、何か違うことに気づきました。今パスカウントで実行しても、OnCalculateで 10回パスが出ます。その結果、インジケーター開始時の遅延を小さくすることがベストな選択と思われます。

松葉づえによる解決は必要ない、繰り返す。今の挙動は私に合わない、開発者自身のアドバイスも通用しない。このようなことは、放っておいても何もいいことはないのです。問題が検出されたので、開発者が解決する必要がある。

 
Alexey Kozitsyn:

松葉づえによる解決は必要ない、繰り返す。今の挙動は私に合わない、開発者自身のアドバイスも通用しない。このようなことは、放っておいても何もいいことはないのです。問題が発見されたら、開発者が解決しなければならない。

私が見たものを説明しました。どうすれば解決できるかを考えなければならない。つまり、ファーストパストラッキングなど、全く意味がないのです...。

 
Konstantin Nikitin:

私が見てきたものを説明しました。どう対処するか考えなければならない。つまり、ファーストパストラッキングなど、どう考えてもまずい。

そういう「薄い」ところでテストして、エラー番号で正しく動作する仕組み(リクエストごとにノックして)とか、履歴アクセス機能で何らかの追加チェック(つまり何時間もそういう問題を探さないように内蔵)とかが必要だと思うのですが、どうでしょう?そして、この仕組みはドキュメントで詳しく説明されるべきです。そうすれば、開発者に質問されることもないでしょう。でも、今はどうなんでしょう?ドキュメントには、古いTFのデータへのアクセスについて何も書かれていないので、開発者自身がデータの入手方法を知らないのです。ヒゲ年のフォーラムには、同じような理由のリンクがいくつかあるだけです。

 
サーバーとの違いが時間単位でわかるなら。現在のローカルクロックと最後のアワーバーの開始時刻 の比較を使用することができます。TimeCurrent は、時刻が更新されない可能性があるため、適切ではない。
こんな感じ
     MqlDateTime mqlDateTime;
     TimeToStruct( (TimeLocal()-60*3), mqlDateTime );
     mqlDateTime.min = 0;
     mqlDateTime.sec = 0;
     
     if( IsConnected() )
          Comment( TimeToString( iTime(Symbol(), PERIOD_H1, 0) ), "\n", TimeToString( StructToTime(mqlDateTime) ) );
 
Alexey Kozitsyn:

ところで、端末版についての質問に答えていないね。

端末1121、1090

アレクセイ・コジツィン

サーバーとの通信が確立される。上級TFデータ要求時、データの準備が出来ていない場合、エラーまたは0を返す。データが準備できた場合 - 実際のデータのみを返す。それだけです。データが長時間準備できない場合、エラーまたは0を返すようにする。

ここに誤りはない。接続と履歴データがあります。
すでに端末に入っているデータはすぐに表示されます。
新しいデータは、ブローカーにリクエストを送り、何か足りないものがあればアップロードする必要があるため、遅延が発生する。

新しいデータが表示されると、すぐにティックが生成されます(マーケットが閉じている現在でも)。
新しいバーの update-appearanceをチェックして、自分で変数を変更すればいいのです。

ps. mt4にはデータの関連性を示すフラグがありません。

 
Taras Slobodyanik:

端末1121、1090

ここに誤りはない。接続があり、履歴データが存在する。
すでに端末にあるデータはすぐに表示されます。
新しいデータが届くと、ブローカーにリクエストを送り、何か足りないものがあればアップロードする必要があるため、遅延が発生する。

新しいデータが表示されると、すぐにティックが生成されます(マーケットが閉じている現在でも)。
新しいバーの update-appearanceをチェックして、自分で変数を変更すればいいのです。

ps. mt4にはデータ更新フラグがありません。

やはり、アップデートした端末で再度試してみる必要がありそうです。

コントロールできない行動には、断固として反対です。この関数はエラーにならずに不正なデータを返しますが、これは間違いです。あなた自身も後でそのような場面に遭遇し、「何が問題なのだろう」と思うことでしょう。

例えば、最初は関数がエラーを返したとする。発売される。次のクエリで、この関数はエラーを返さず、いくつかの「正しくない」データを返しました。大丈夫なんですか?

 

不正確なデータとはどういう意味ですか?

それがない、あるいは接続されていない、などという場合は、はい、エラーになります。
そして、数えるほどしかないのです。

すべてのデータが正しい場合 - すべてがうまくいき、すべてが実行されます。

インジケーターがデータ更新に追従していない。
ブローカーから新しいバーが来て、それをチェックすることはない。
確認するとすべて正しいことがわかるように、2行ほど追加しました。

新しいバーを確認するのは作業状況です。

 
Taras Slobodyanik:

不正確なデータとはどういう意味ですか?

そして、私の一番最初の投稿を見てください。そこにエラー4066が表示されていませんか?そして、エラー0となり、不正なデータが返されます。なぜ、データを送信する前に関数(この場合は SeriesInfoInteger())が関連性をチェックしないのでしょうか?なぜエラーフラグが立たないのでしょうか?ほら、後でエラーを探すより、内部チェックが通るのを少し待った方がいいでしょ。

しかし、その後もいろいろとアドバイスをいただきましたが、まだ結果は出ていません。しかも、それはタイマーがどうのこうのという話ではないことがわかったのです。