MT5와 속도 - 페이지 87

 
fxsaber :

더 빠르게.

동일한 작업을 수행합니다. 함수의 값을 반환합니다. 그러나 사전에 그는 또한 검사를 수행합니다.
결국 함수 자체 내부에는 기호 이름의 전달된 값에 대한 검사가 있으며 " Symbol() , _Symbol 또는 NULL 대신 일반 문자열 매개변수가 지정되면 전체 프로그램 및 속성에 대한 다른 요청" , 또는 현재 기호의 값은 추가 확인 없이 캐시에서 사용됩니다.
왜 다시 하는 동시에 이것이 데이터 수집 속도를 높인다고 주장합니까? 나는 이 추론 뒤에 있는 논리를 이해하지 못한다.

그건 그렇고, 나는 항상 내 기능에서 이것을하지만 데이터 검색이 어떻게 든 빨라진다고 생각하지 않지만 반대로 내 기능에서 전달 된 기호 이름의 값을 확인하기 때문에 속도가 느려집니다.

 
Artyom Trishkin :

왜 다시 하는 동시에 이것이 데이터 수집 속도를 높인다고 주장합니까?

설명을 직접 인용하셨습니다.

 
Slava :

항목 Symbol(), _Symbol - NULL과 동일(여기서 기호 이름 대신 NULL이 허용됨)

MT4에서도 마찬가지인가요? 그리고 MT5 Tester에서는 어떻습니까?

 
Artyom Trishkin :

그건 그렇고, 나는 항상 내 기능에서 이것을합니다.

보여주세요.

 
fxsaber :

설명을 직접 인용하셨습니다.

정확히 - 이것은 모두 일반 함수 내에서 수행됩니다. 왜 외부에서도 복제합니까?

 
Artyom Trishkin :

정확히 - 이것은 모두 일반 함수 내에서 수행됩니다. 왜 외부에서도 복제합니까?

그래서 당신은 설명을 이해하지 못했습니다. 이 두 호출은 속도가 다릅니다.

 void OnTick ()
{
   static const string Symb = _Symbol ;
   MqlTick Tick;
  
   SymbolInfoTick ( _Symbol , Tick);
   SymbolInfoTick (Symb, Tick);  
}
 
fxsaber :

보여주세요.

모든 기능과 방법, 어디에서 수행됩니까?

너무 많습니다.

 
Artyom Trishkin :

모든 기능과 방법, 이것은 어디에서 수행됩니까?

하나면 충분합니다.

 
fxsaber :

그래서 당신은 설명을 이해하지 못했습니다. 이 두 호출은 속도가 다릅니다.

나는 모든 것을 이해하는 것 같다. 당연히 그녀는 다릅니다. 속도를 어떻게 높였습니까? not_Symbol인 경우에는 현재가 아닌 기호의 값을 함수에 전달합니다.

여기서, 위의 값을 함수에 전달할 경우 함수는 확인하지 않고 캐시에서 현재 심볼의 값을 가져옵니다.

다른 경우에는 "전체 프로그램" 확인 + 시장 시계에 있는 지정된 기호의 데이터를 요청합니다. "빠른" 기능은 기본이 아닌 기호에서 데이터를 요청할 때 이러한 검사를 제거하지 않습니다. 그렇다면 가속도는 어디에 있습니까?

 bool SymbolInfoTickFast( const string &Symb, MqlTick &Tick )
{
   return ((Symb == _Symbol ) ? SymbolInfoTick ( _Symbol , Tick)
                           : SymbolInfoTick (Symb, Tick));
}

함수가 호출될 때 함수에는 두 가지 옵션만 있습니다. if(SymbolInfoTickFast(Symbol(), tick_array)) {}

  1. 현재 기호 데이터 가져오기 - _Symbol 매개변수를 사용하여 SymbolInfoTick 호출(빠르게)
  2. 다른 기호의 데이터 가져오기 - 기호 문자열 매개변수를 사용하여 SymbolInfoTick 호출(느림)

다른 대화로, (움직이는 모든 것을 정의하는 습관에서 벗어나) 현재 기호에 대한 문자열 변수를 생성하면 예 - 강제로 검사를 수행하고 매크로 대체를 미리 정의된 변수 또는 Symbol()로 대체해야 합니다. 전화

 
Artyom Trishkin :

속도를 어떻게 높였습니까?

뻔한걸 설명하기가 어렵네요.
 const MqlTick GetMarketWatchTick( const string &Symb )
{
   MqlTick Tick = { 0 };

   SymbolInfoTick (Symb, Tick);

   return (Tick);
}

void OnTick ()
{
   MqlTick Ticks[ 1 ];
  
  Ticks[ 0 ] = GetMarketWatchTick( _Symbol );
   ArrayPrint (Ticks);
}
이 코드에서는 GetMarketWatchTick의 속도를 높일 수 있습니다.