mql5言語の特徴、微妙なニュアンスとテクニック - ページ 95

 
スラバ

本当に質問全体を読んだのでしょうか?

...GetMicrosecondsCountの2回の呼び出しの 間に...

つまり、1回目の呼び出しは同期前、2回目の呼び出しは同期後に発生し、その差は実際のマイクロ秒数+同期補正となり、同じになります。

 
アレクセイ・ナヴォイコフ

1回目の呼び出しがシンク前、2回目の呼び出しがシンク後なので、その差は実際のマイクロ秒数+シンク補正で等しくなりますね。

では、GetMicrofsecondsCountを2回呼び出す間に時間が修正される確率を教えてください。

本当にマイクロ秒を測っているのであれば、確率は0に近い。

そして、マイクロ秒を秒以上の間隔で計測しているのですか?なぜ?真空中のスフェロコン?

 
アレクセイ・ナヴォイコフ

私はここで WinApiを使ったコードを具体的に引用しました。 それを実行し、途中で時計を変えて、その結果を見てください。

あなたの主張が推測に基づいたものであるならば、あなたとどのように対話すればよいのかがよくわかりません。 また、あなたは話題の経過を知る必要さえないと考えているのでしょう。

お前こそ問題提起を全く理解してないだろ。

先ほども言ったように、予期せぬ時刻の変化は、どんな機能を使っても正確な時刻管理を前提とするあなたのコードを殺してしまうのです。
 
スラバ

では、GetMicrofsecondsCountを2回呼び出す間に時間が修正される確率を教えてください。

本当にマイクロ秒を測っているのであれば、確率はほぼ0です。

そして、マイクロ秒を秒単位以上で計測しているのですか?なぜ?真空中のスフェロコン?

この確率は、同期期間が短ければ短いほど、ずれが生じる確率が高くなることは既にお話したとおりです。 また、隣接する測定器間の距離にも依存します。長ければ長いほど、オフセットに当たる頻度が高くなる。 だから、この2つのパラメータをもとに確率を計算し、指をくわえて見ているだけではダメなのだ。

また、なぜ16msec以下と言ったかというと、例えば16msec以下はこの機能でしか測定できないからです。また、16-30ミリ秒でもこの機能で測定しないと誤差が大きくなります。

もし、これらが些細なことで、無視できると思われるなら、それは純粋にあなたの個人的な意見です。 以前、ここで標準のシステム関数 QueryPerformanceCounter についてお話しましたが、これは何のずれもなく、きちんと動きます。 これは、ある理由で発明されたはずです。 ところで、ここで レナートはある理由でそれを宣言しています。

それがマイクロ秒の数え方です。

しかし、実際にはそうではなく、QueryPerformanceCounterについてです。

 
レナト・ファットフーリン
お前こそ問題提起を全く理解してないだろ。

私が言ったように、予期しない時間の変化は、使用する関数に関係なく、正確な時間制御に結びついたコードを殺すことになるのです。

QueryPerformanceCounterに時間変化がありません。 どういうことですか? 私がリンクを渡したコードを実行しましたか?

 

MQL5のコード実行マシンを確認したところ、GetMicrosecondCountで ハイブリッドメターリング方式を採用していることが判明しました。

  • Windows 8 以降では、システム時間に応じて若干高速なGetSystemTimePreciseAsFileTime 関数が使用されました。
  • その他の場合は、QueryPerformanceFrequency+QueryPerformanceCounter
  • どちらの場合も、GetMicrosecondCountは、プログラムのスタートからマイクロ秒を取得する機能を実行しました。

このコードが現れたのは、時間測定呼び出しのシステムオーバーヘッドを削減しようとしたためである。ある開発者がやりすぎてしまったんです。

私たち個人とSlavaは、純粋なQueryPerformanceCounterが動作していることを確信していました。そして、そんな暗号があったのです。しかし、ハイブリッドモデルの存在によって、私たちは勘違いしてしまったのです。

これで、純粋なQueryPerformanceFrequency + QueryPerformanceCounterが動作するようになりました。

結論から言うと、GetMicrosecondCount関数の実装とその動作の保護の両方を失敗させたのです。

スラバと私は謝罪します!
 
このトピックに関係のないコメントは、「バグ、不具合、問題」に移動しました。
 
レナト・ファットフーリン

明示的・暗黙的に"should "フレーズを使用することについての注意点。ご検討 ください」の代わりに「metaquotes should」を使用することは、現在では容認できない。

行間を読むことは、対談者の書く内容とは関係ないことの方が多いという前提でお考えください。

フォーラムの支援による実際のバグレポートと、MQに飛びつくのは相容れないものです。常に嫌われ者に変化し、また元に戻る人とは思えない。

 
MT5自体がGetMicrosecondCountで 長い時間間隔を計測しています。
IS      0       13:32:55.239    Trades  '11391209': accepted exchange buy 1.00 AFKS at market
DM      0       13:33:07.896    Trades  '11391209': deal #265475900 buy 1.00 AFKS at 9.095 done (based on order #284425784)
OD      0       13:33:07.898    Trades  '11391209': order #284425784 buy 1.00 / 1.00 AFKS at 9.095 done in 12757.608 ms
 

友人、誰に相談したらいいか教えてください - 同じ商品で取引所によって価格差がある場合の仕組みについて理解したい - このビジネスは初めてなので、理解したいです。何かアドバイスがあればありがたいのですが、別のスレッドに書いた方がいいのでしょうか?

いくつかの外国為替取引所にアクセスできるが、その仕組みがよくわからない。