Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 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;
    }
  }
}
tamam biraz konu dışına çıktım
 
// Возвращает 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);
}


Başvuru

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

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


Tehdit Tester'da bir bilgisayarın yerel saatini bulmanın daha kolay bir yolu var mı?

 
fxsaber :

Başvuru

Tehdit Tester'da bir bilgisayarın yerel saatini bulmanın daha kolay bir yolu var mı?

Global bir değişken aracılığıyla (GlobalVariableTemp, GlobalVariableTime).

 
Stanislav Korotki :

Global bir değişken aracılığıyla (GlobalVariableTemp, GlobalVariableTime).

Çalışmayacak.

 
fxsaber :

Çalışmayacak.

Uzun süredir iyi çalışıyor.

 
Stanislav Korotki :

Uzun süredir iyi çalışıyor.

O zaman neyi yanlış yapıyorum?

 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 :

O zaman neyi yanlış yapıyorum?

Sorunun, özlü sözlere olan sevginizden kaynaklandığından şüpheleniyorum. eğer denersen.

 
TheXpert :

Sorunun, özlü sözlere olan sevginizden kaynaklandığından şüpheleniyorum. eğer denersen.

Sınanmış

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

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

aşmaz.

 
fxsaber :

Sınanmış

aşmaz.

Global değişken MT5 Tester ile taklit edildiğinden çalışmıyor. Ayrıca TimeCurrent () kullanırlar .
 
fxsaber :

Sınanmış

aşmaz.

Benim için beklendiği gibi çalışıyor ...

not. Benim hatam - MT4'te çalışıyor ancak MT5'te çalışmıyor.

Neden: