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

 
fxsaber
template <typename T1, typename T2>
bool More(const T1& first, const T2& second)
{
   return first > second;
}

bool More(const MqlTick& first, const MqlTick& second)
{
   return first.bid > second.bid;
}

// Простая сортировка
template <typename T1, typename T2> // T2 - по какому правилу сортируем
void Sort( T1 &Array[] )
{
  const int Size = ArraySize(Array);
  
  for (int i = 0; i < Size - 1; i++)
  {
    T2 Min = Array[i];
    int Pos = i;
    
    for (int j = i + 1; j < Size; j++)
      if (More(Min, Array[j]))
      {
        Min = Array[j];
        Pos = j;        
      }
      
    if (Pos != i)
    {
      Array[Pos] = Array[i];
      Array[i] = Min;
    }
  }
}
とにかく、ちょっと話がそれてしまいましたが
 
// Возвращает TimeLocal даже в Тестере
datetime GetTimeLocal( void )
{ 
  static const bool IsTester = MQLInfoInteger(MQL_TESTER);
  static uint TickCount = 0;
  static datetime InitTimeLocal = 0;
  
  datetime Res = 0;
  
  if (IsTester)
  {
    if (InitTimeLocal)
      Res = InitTimeLocal + (GetTickCount() - TickCount) / 1000;
    else
    {
      int Array[];    
      const string FileName = __FUNCTION__;  
      
      if (FileSave(FileName, Array))
      {
        TickCount = GetTickCount();
        
        Res = InitTimeLocal = (datetime)FileGetInteger(FileName, FILE_MODIFY_DATE);
      }
    }
  }
  else
    Res = TimeLocal();
    
  return(Res);
}


アプリケーション

void OnInit()
{
  Print(GetTimeLocal());  
}

double OnTester()
{
  Print(GetTimeLocal());
  
  return(0);
}


HH テスターでローカル PCの時刻を 簡単に調べる方法はありますか?

 
fxsaber

アプリケーション

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

グローバル変数(GlobalVariableTemp、GlobalVariableTime)を介する。

 
スタニスラフ・コロツキー

グローバル変数(GlobalVariableTemp、GlobalVariableTime)を介する。

うまくいきません。

 
fxsaber

うまくいかない。

長い間、ちゃんと動いてくれているんです。

 
スタニスラフ・コロツキー

ずっと正常に動作しています。

では、何が間違っているのか?

datetime GetTimeLocal( const bool FlagDelete = false )
{ 
  static const bool IsTester = MQLInfoInteger(MQL_TESTER);
  static const string Name = __FILE__;

  return(IsTester && GlobalVariableTemp(Name) ? GlobalVariableTime(Name) : TimeLocal());
}

double OnTester()
{
  Print(GetTimeLocal());
  
  return(0);
}
 
fxsaber

では、何が間違っているのか?

問題は、あなたの連結に対する愛着ではないでしょうか。

 
TheXpert です。

問題は、あなたが饒舌になるのが好きなことだと思います。

トライアル

datetime GetTimeLocal()
{ 
  static const string Name = __FILE__;

  datetime Res = 0;
  
  if (GlobalVariableTemp(Name))
    Res = GlobalVariableTime(Name);
  
  return(Res);
}

動作しない。

 
fxsaber:

トライアル

動作しない。

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

トライアル

うまくいかないんです。

私の場合、期待通りに動作するのですが...。

PS.私のミスです - MT4では動作しますが、MT5では動作しません。

理由: