//+------------------------------------------------------------------+
//|                                                  QuickTestEA.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, zznbrm"

#import "kernel32.dll"
void GetLocalTime(int& TimeArray[]);
#import

double gdblSave = 0.0;
double gdblSave2 = 0.0;
string astrDiff[] = { "", "", "", "", "" };

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{   
   return( 0 );
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   Comment( "" );
   return( 0 );
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   /***********************************************/
   // Method 1 - Using API call to get time
   double dblTime = getCurrTime();
      
   if ( gdblSave == 0.0 )   gdblSave = dblTime;
   
   double dblTemp = gdblSave;
   gdblSave = dblTime;
   /***********************************************/
   
   /***********************************************/
   // Method 2 - Using GetTickCount to get time
   double dblTime2 = GetTickCount();
   
   if ( gdblSave2 == 0.0 )   gdblSave2 = dblTime2;
   
   double dblTemp2 = gdblSave2;
   gdblSave2 = dblTime2;
   /***********************************************/
   
   // Display time for both methods in the comment section of the chart
   astrDiff[4] = astrDiff[3];
   astrDiff[3] = astrDiff[2];
   astrDiff[2] = astrDiff[1];
   astrDiff[1] = astrDiff[0];
   astrDiff[0] = DoubleToStr( dblTime - dblTemp, 3 ) + " " + DoubleToStr( ( dblTime2 - dblTemp2 ) / 1000.0, 3 );
   
   Comment( astrDiff[0], "\n", astrDiff[1], "\n", astrDiff[2], "\n", astrDiff[3], "\n", astrDiff[4] );   
   return( 0 );
}

double getCurrTime()
{
   int aintTimeArray[4];
   int intHour, intMin, intSec, intMilliSec;
   
   GetLocalTime( aintTimeArray );

   intHour = aintTimeArray[2] & 0x0000FFFF;
   intMin = aintTimeArray[2] >> 16;
   intSec = aintTimeArray[3] & 0x0000FFFF;
   intMilliSec = aintTimeArray[3] >> 16;
   
   double dblTime = ( intHour * 3600.0 ) + ( intMin * 60.0 ) + intSec + NormalizeDouble( intMilliSec / 1000.0, 4 );
   
   return( dblTime );
}