記事"MQL5 プログラミング基礎:時刻"についてのディスカッション - ページ 4

 
Dennis Kirichenko:

ミリ秒精度のTimeCurrent()のアナログ、TimeCurrentMsс()のようなものが必要。

取引、自動取引システム、取引戦略のテストに関するフォーラム

マーケットクローズ

fxsaber, 2017.09.22 09:45 AM

// 最後に文字が刻まれた時間
long GetSymbolTime( const string Symb )
{
  MqlTick Tick;
  
  return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0);
}

// マーケットウォッチの最終ティックの時間
long GetMarketWatchTime( void )
{
  long Res = 0;
  
  for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
  {
    const long TmpTime = GetSymbolTime(SymbolName(i, true));
    
    if (TmpTime > Res)
      Res = TmpTime;
  }
  
  return(Res);
}

// pingを考慮しない取引サーバーの現在時刻
long GetCurrenTime( void )
{
  static ulong StartTime = GetMicrosecondCount();
  static long PrevTime = 0;
  
  const long TmpTime = GetMarketWatchTime();
  
  if (TmpTime > PrevTime)
  {
    PrevTime = TmpTime;
    
    StartTime = GetMicrosecondCount();
  }
  
  return(PrevTime + (long)((GetMicrosecondCount() - StartTime) / 1000));
}

void OnInit()
{
  MarketBookAdd(_Symbol);
}

void OnDeinit( const int )
{
  MarketBookRelease(_Symbol);
}

string TimeToString( const long Value )
{
  return((string)(datetime)(Value / 1000) + "." + (string)IntegerToString(Value % 1000, 3, '0'));
}

void OnBookEvent( const string& )
{
  Comment(TimeToString(GetCurrenTime()));
}

もちろん完璧ではない。

 

fxsaber、ありがとう!いつもながら的を射ている。リスペクト

 
記事を楽しみ、役に立った!
 
mt5を使用するためのローソク足の時間はどこで入手できますか?
 
MT$のインジケーターはどこで入手できますか?
 

EAを午前8時から午後2時の間に稼働させたいのか、最適化したいのか、特定の時間に稼働させたいのか、例えば9時間15分最適化したいのか、もっと簡単に判断する方法はありますか?

 
MQL5もプログラミングも初めてなので、初めてのExpert Advisorで時間に関連することを管理する必要があるときに使えるテクニックのアイデアを教えてくれました。