오류, 버그, 질문 - 페이지 1933

 
fxsaber :
차이는 1e-15보다 큽니다. 또한 Num != Norm. 이것은 같은 숫자가 아니라 다른 숫자입니다.

내 MT4는 true, true를 표시하고 차이는 0입니다. ;-)

 
Stanislav Korotky :

내 MT4는 true, true를 표시하고 차이는 0입니다. ;-)

MT4/5를 구별하는 문서화되지 않은 방법이 등장했습니다. 그리고 MT5의 비트는 그것과 아무 관련이 없습니다.

 
fxsaber :

MT4/5를 구별하는 문서화되지 않은 방법이 등장했습니다. 그리고 MT5의 비트는 그것과 아무 관련이 없습니다.

또한 mql4에서는 작동하지만 mql5에서는 문서화된 작업 접두사 증가 (++i) 및 감소(--k)조차 없습니다.

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :

또한 mql4에서는 작동하지만 mql5에서는 문서화된 작업 접두사 증가 (++i) 및 감소(--k)조차 없습니다.

문제가 보이지 않음

 void OnStart ()
{
   int i = 0 ;
  
   Print (i++ == 0 ); // true
   Print (++i == 2 ); // true
}
 
fxsaber :

MT4/5를 구별하는 문서화되지 않은 방법이 등장했습니다. 그리고 MT5의 비트는 그것과 아무 관련이 없습니다.

이것은 MT4/5의 차이도 아니지만 #property strict가 활성화되었는지 여부입니다.

활성화됨 - 다를 것이고, 아니오 - 그렇지 않을 것입니다.

NormalizeDouble 의 다양한 구현이 있습니다!
 

어떤 경우에 reason=0이 OnDeinit의 표시기에 전달될 수 있습니까?

 
fxsaber :
차이는 1e-15보다 큽니다. 또한 Num != Norm. 이것은 같은 숫자가 아니라 다른 숫자입니다.

영도를 계산하는 것은 어떻습니까? 0에서 -14까지의 도수 - 총 15자리. 학위 -15는 이미 16번째 범주입니다. 그렇게 생각해요.

 
Stanislav Korotky :

영도를 계산하는 것은 어떻습니까? 0에서 -14까지의 도수 - 총 15자리. 학위 -15는 이미 16번째 범주입니다. 그렇게 생각해요.

DBL_MIN 이 0과 얼마나 다른지 확인하십시오.

 

스크립트의 릴리스 버전은 디버그 버전보다 거의 3배 느립니다.

 string   PositionGetString2( const ENUM_POSITION_PROPERTY_STRING   Property_id )
{
   return ( PositionGetString (Property_id));
}

#define TOSTRING(A) #A + " = " + ( string )(A)

void OnStart ()
{
   if ( PositionSelect ( _Symbol ))
  {
     const ulong StartTime = GetMicrosecondCount ();
    
     for ( int i = 0 ; i < 1 e7; i++)
    {
      PositionGetString2( POSITION_SYMBOL );
      PositionGetString2( POSITION_COMMENT );
    }
    
     Print (TOSTRING( GetMicrosecondCount () - StartTime));
  }
}

플레이 단계

  1. 디버깅을 위해 EURUSD를 선택하고 터미널에서 차트를 엽니다.
  2. EURUSD에서 하나의 포지션을 엽니다.
  3. F5를 사용하여 ME에서 디버그 버전을 실행하고 로그에서 결과를 확인합니다.
  4. F7을 통해 ME로 재컴파일 - 이것은 매우 중요합니다. 그렇지 않으면 EX5가 디버깅됩니다.
  5. 터미널에서 결과 릴리스 스크립트를 실행하고 로그에서 결과를 확인합니다.
디버그 버전 결과

 GetMicrosecondCount ()-StartTime = 638537


릴리스 버전 결과

 GetMicrosecondCount ()-StartTime = 1746492
 

눈금을 사용자 지정 기호 로 가져오면 tkc 파일을 읽지 않습니다.