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

 
fxsaber :

ME는 ALT + V의 조합으로 시스템 클립보드의 이전 값을 볼 수 있습니다. 브라우저에서 무언가를 복사하고 ME가 백그라운드에서 실행되더라도 ME는 그것을 보고 기억할 것입니다.

대략적으로 말하면 ME는 당신이 컴퓨터에서 하는 일을 많이 봅니다. 예를 들어 버퍼를 통해 계정 비밀번호를 붙여넣으면 ME 기록으로 이동합니다.

이 메가 버퍼에 많은 것을 복사합니다. 이 버퍼를 지우려면 ME를 다시 시작해야 하지만 ME를 시작할 때 여전히 버퍼에서 현재 데이터를 선택하고 부담을 줍니다. 이미 맨 아래에 버튼을 추가하여 지우기를 제안했습니다. 버퍼 및 번호 위치, 삽입할 때 내용이 아닌 위치 번호로 탐색하는 것이 더 쉽습니다.

 
Vitaly Muzichenko :

와우, 암호화폐 거래소에서 비밀번호를 복사하고 있습니다. 나에게 얼마나 나쁜가?

예를 들어 외부(TeamViewer 등)에서 컴퓨터에 대한 액세스 권한을 부여하는 경우 그 전에 모든 ME를 종료하고 버퍼를 지우는 것이 좋습니다(쓰레기 복사).

 
fxsaber :

ME는 ALT + V의 조합으로 시스템 클립보드의 이전 값을 볼 수 있습니다. 브라우저에서 무언가를 복사하고 ME가 백그라운드에서 실행되더라도 ME는 그것을 보고 기억할 것입니다.

대략적으로 말하면 ME는 당신이 컴퓨터에서 하는 일을 많이 봅니다.

고맙습니다. 흥미로운. ME에 복사된 내용뿐만 아니라 모든 응용 프로그램의 모든 항목이 저장된다는 점을 추가할 가치가 있습니다. 구체적으로, 어느 깊이까지 저장되었는지 확인해야 합니다. 이제 확인했습니다. 이 포럼의 메시지에서 ME에서 2개, 텍스트에서 1개, 3개의 복사된 텍스트를 보았습니다.

추신; 포럼에 올라온 글 2개라도


 
글쎄, 만일을 대비하여 검색 및 교체에 아무것도 들어가지 않도록 살펴보십시오. metaeditor.ini에서 이것은
FindWhatX=text
ReplaceWithX=text
 
fxsaber :

ME는 ALT + V의 조합으로 시스템 클립보드의 이전 값을 볼 수 있습니다. 브라우저에서 무언가를 복사하고 ME가 백그라운드에서 실행되더라도 ME는 그것을 보고 기억할 것입니다.

대략적으로 말하면 ME는 당신이 컴퓨터에서 하는 일을 많이 봅니다. 예를 들어 버퍼를 통해 다른 자원의 계정이나 개인 계정에 비밀번호를 붙여넣으면 현재 ME 세션의 이력으로 이동합니다.

흥미로운 기능입니다. 버퍼가 파일이 아닌 메모리에 저장되는 것이 좋습니다.

 

여기에 또 다른 미묘함이 있습니다.

컴파일러는 클래스에 속하지 않는 경우에도 입력 매개변수가 다른 동일한 이름의 함수에 대해 맹세하지 않습니다.

 void OnStart ()
{
 f1( "28-70 ОГО" );
 f1( 1.01 );
}

void f1( string s)
{
 Print ( __FUNCSIG__ , " " , s);
}

void f1( double s)
{
 Print ( __FUNCSIG__ , " " , s);
}

실행 결과

 2019.03 . 10 10 : 34 : 45.566 ! 00 (EURUSD,H4) void f1( string ) 28 - 70 ОГО
2019.03 . 10 10 : 34 : 45.566 ! 00 (EURUSD,H4) void f1( double ) 1.01
 

다중 버퍼는 편집기에서 작업 속도를 높이고 안전합니다.

디스크에 아무 것도 쓰지 않고 메모리에만 데이터를 보관합니다.

 
Alexey Viktorov :

여기에 또 다른 미묘함이 있습니다.

컴파일러는 클래스에 속하지 않는 경우에도 입력 매개변수가 다른 동일한 이름의 함수에 대해 맹세하지 않습니다.

실행 결과

이것은 정상적인 함수 과부하 입니다. 모든 것이 표준입니다.

 
Artyom Trishkin :

이것은 정상적인 함수 오버로딩 입니다. 모든 것이 표준입니다.

어떤 이유로 나는 오버로딩이 클래스에서만 작동한다고 생각했습니다. 저만 그런게 아니라고 생각하고 싶습니다. 어쩌면 이것은 누군가를 도울 것입니다. ))))

 
옵티마이저 캐시는 다음 트릭으로 끌 수 있습니다.
 // Способ выключить кеш оптимизатора
sinput bool inCache = true ; // Выключить кеш оптимизатора

input int Range = 0 ; // 0..10

void OnTesterInit ( void )
{  
   if (inCache)
  {
     MathSrand (( int ) TimeLocal ());
    
     ParameterSetRange ( "inCache" , false , MathRand (), 0 , 0 , 0 );    
  }
}

void OnTesterDeinit ( void ) {}

void OnTesterPass ( void )
{
   static int i = 0 ;
  
   Print (i++); // Признак того, что кеш выключен.
}

double OnTester ( void )
{
   if ( MQLInfoInteger ( MQL_OPTIMIZATION ))
  {
     uchar Data[];

     FrameAdd ( NULL , 0 , 0 , Data);
  }

   return ( 0 );
}


물론 개발자가 OptimizationCacheOff() 를 제공하면 최상의 솔루션이 될 것입니다.

PS bool 입력 매개변수는 실제로 길다는 점에 유의하십시오. 따라서 bool inCache = 1bool inCache = 2 는 서로 다른 입력 매개변수이지만 두 경우 모두 해당됩니다.