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 );
}


위협 테스터에서 컴퓨터 의 현지 시간 을 더 쉽게 알 수 있는 방법이 있습니까?

 
fxsaber :

애플리케이션

위협 테스터에서 컴퓨터의 현지 시간을 더 쉽게 알 수 있는 방법이 있습니까?

전역 변수 (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 :

그럼 내가 뭘 잘못하고 있니?

나는 문제가 당신의 간결함을 사랑하는 것이라고 생각합니다. 시도하면 통해.

 
더엑스퍼트 :

나는 문제가 당신의 간결함을 사랑하는 것이라고 생각합니다. 시도하면 통해.

시험을 마친

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

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

초과하지 않습니다.

 
fxsaber :

시험을 마친

초과하지 않습니다.

전역 변수가 MT5 Tester로 에뮬레이트되기 때문에 작동하지 않습니다. 그들은 또한 TimeCurrent()를 사용 합니다.
 
fxsaber :

시험을 마친

초과하지 않습니다.

나에게 예상대로 작동합니다 ...

추신. 내 실수 - MT4에서는 작동하지만 MT5에서는 작동하지 않습니다.