mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 58

 
테스터에서는 TimeCurrent() 가 아닌 TimeTradeServer()를 통해서만 현재 시간을 정확하게 얻을 수 있습니다.
 
fxsaber :
테스터에서는 TimeCurrent() 가 아닌 TimeTradeServer()를 통해서만 현재 시간을 정확하게 얻을 수 있습니다.
논란이 많은 발언.
 
슬라바 :
매우 논란의 여지가 있는 발언입니다.
 void OnTick ()
{
   Print ( TimeCurrent ());
  
   Sleep ( 3600 * 1000 );
  
   Print ( TimeCurrent ());
   Print ( TimeTradeServer ());     
  
   ExpertRemove ();
}

결과

 2017.10 . 02 00 : 03 : 03    2017.10 . 02 00 : 03 : 03
2017.10 . 02 01 : 03 : 03    2017.10 . 02 01 : 02 : 59
2017.10 . 02 01 : 03 : 03    2017.10 . 02 01 : 03 : 03


TimeCurrent는 테스터(서버)가 아닌 메인 심볼의 마지막 틱 시간을 반환합니다. 정확한현재 서버 시간 을 밀리초 단위로 알 수 없습니다.

 

좋은 오후에요 . 서비스 어레이에 대해 읽기 https://www.mql5.com/ru/docs/constants/objectconstants/enum_anchorpoint(마지막 예에서)

더블 업[], 다운[];
    날짜 시간 시간 [];

어딘가에 모든 서비스 어레이의 목록이 있습니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR. – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются...
 
나는 일주일 더 이 신호를 따랐다 나는 따를 것이다

그리고 보자

ko/signals/352123

 

보호된 메서드/필드를 사용할 수 있게 해주는 언어 트릭입니다.

예시

 #include <Canvas\Canvas.mqh>

// Помещает картинку в ресурс
bool ToResource( const string Name, const uint &Data[], const uint Width )
{
   return (:: ResourceCreate (Name, Data, Width, (Width == 0 ) ? :: ArraySize (Data) : :: ArraySize (Data) / Width, 0 , 0 , Width, :: COLOR_FORMAT_ARGB_NORMALIZE ));
}

// Прием использования protected полей/методов
class CANVAS : public CCanvas
{
public :
   // Загрузка картинки из BMP-файла
   static bool BMPToArray( const string FileName, uint &Data[], int &Width )
  {
    CANVAS Canvas;
    
     const bool Res = Canvas.LoadFromFile(FileName);
    
     if (Res)
    {
       ArrayCopy (Data, Canvas.m_pixels);
      
      Width = Canvas.m_width;
    }
    
     return (Res);
  }
};

// Грузим BMP с альфаканалом не из ресурса, а из файла
void OnStart ()
{     
   const string Resource = "::Resource" ;
         
   uint Data[], Width;   
  
   if (CANVAS::BMPToArray( "Picture.bmp" , Data, Width) &&
      ToResource(Resource, Data, Width))
  {
   ObjectCreate ( 0 , __FILE__ , OBJ_BITMAP_LABEL , 0 , 0 , 0 );   
   ObjectSetString ( 0 , __FILE__ , OBJPROP_BMPFILE , Resource);
        
   // Сконвертировали BMP в PNG (без учета прозрачности)
   BitmapObjectToFile( 0 , __FILE__ , "Picture.png" ); // https://www.mql5.com/ru/forum/170952/page57#comment_5985505
  }
}
 
이 주제와 관련이 없는 댓글은 " MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 "으로 이동되었습니다.
 
이 기능 때문에

템플릿 매개변수의 입력은 엄격하며 암시적 캐스트를 사용한 전문화는 허용되지 않습니다.

입력 매개변수에서 기본 클래스의 포인터만 받아들이고 컴파일 단계에서 자손을 버리는 쓰기 기능을 달성하는 것이 가능합니다.


예시

 template < typename T>
void StrongCondition( T, T ) {}

class A
{
public :
   int i;
  
   template < typename T>  
   void SetStong( T Value )
  {
    StrongCondition(& this , Value);
    
     this .i = Value.i;
  }
  
   void Set( A* Value )
  {
     this .i = Value.i;
  }
};

class B : public A {};

void OnStart ()
{
  A a;
  B b;
  
  a.Set(&b);   
  a.SetStong(&a);
  
  a.SetStong(&b);       // потомки в явном виде запрещены
  a.SetStong((A*)(&b)); // только явное приведение разрешено
}
 
const 클래스 개체 의 필드를 변경하거나 const가 아닌 메서드를 호출할 수 있습니까? -할 수 있다!
 template < typename T>
T GetMe( const T Ptr )
{
   return ((T)Ptr);
}

class A
{
public :  
   int i;
};

void OnStart ()
{
   const A a;

   GetMe(&a).i = 1 ;
  
   Print (a.i); // 1
}

이 기능 자체가 마음에 들지 않습니다. 무단 접근에 대비한 보험이라고 생각했습니다. 허나! 물론 const 구조에서는 이것이 작동하지 않습니다. 따라서 이 허점을 알고 있어야 합니다.