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

 
アラン・ヴェルレーエン
MT5 Testerでグローバル変数をエミュレートしているため、うまくいきません。また、TimeCurrent()を使用して いる。

すみません、MT4と混同しています。MT4では動作しますが、MT5では動作しません。

 
fxsaber:


アプリケーション


HH テスターでPCのローカルタイムを簡単に取得する方法はありますか?

この方法では合理的ではなく、一度実時間を取得して、GetTickCountやGetMicrosecondCountで 差分を計算すればいいのです

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

一度だけ実時間を取得し、GetTickCountやGetMicrosecondCountで差分を計算する必要があります。

はい、そうですね。

 
コードは?
 
アレクセイ・タラバーノフ
コードは?
 
アレクセイ・ナヴォイコフ

一度だけ実時間を取得し、GetTickCountやGetMicrosecondCountで差分を計算する必要があります。

テスターでの時間密度はかなり違います。うまくいかない。

 
アレクセイ・タラバーノフ
コードは?

更新しました。

 
GetTickCount はオーバーフローを考慮する必要があります。
 
TheXpert です。
GetTickCountはオーバーフローを考慮できるようにする必要があります。

あるUINTから別のUINTを引くと、オーバーフローがあっても結果は常に正しくなります。

イラストレーション

void OnStart()
  {
//---
   uint first=UINT_MAX-5;
   uint second=first+100;
   PrintFormat("%u - %u = %u",second,first,second-first);
  }

ログ

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
UINTから別のUINTを引くと、オーバーフローした場合でも結果は常に正しくなります。

おそらく、1つのパスが〜50日以上続く(その後、GetTickCountが フルサイクルになる)ことを意味しているのでしょう。しかし、これは実践の域を出ていない。

理由: