그래, 무슨 일이야??? - 페이지 5

 
Andrey F. Zelinsky :

변수를 전역적으로 선언하고 선언할 때 초기화합니다(예: int kk=0;

그런 다음 OnTick()에서 인쇄를 취소하고 값을 변경합니다(예: Print("kk=",kk)); ++ㅁ;

그런 다음 TF를 변경하고 결과를 보십시오.

TF가 변경되더라도 전역 변수 는 값을 유지하지만 테스터에서는 이와 같은 일이 발생하지 않습니다.

 
Andrey Dik :

TF가 변경되더라도 전역 변수 는 값을 유지하지만 테스터에서는 이와 같은 일이 발생하지 않습니다.

여기에서 결과 차이의 이유에 대한 답을 찾았습니다.

최적화할 때 매개변수 검색이 있습니다. 다른 설정으로 EA를 다시 시작합니다.

 
Andrey F. Zelinsky :

여기에서 결과 차이의 이유에 대한 답을 찾았습니다.

Expert Advisor의 전역 변수는 이전 옵티마이저 실행 시 그 값을 유지하고 다음 옵티마이저로 이전된다고 생각하십니까? 다누나.

 
Andrey F. Zelinsky :

확인하는 것보다 확인하는 것이 더 쉽습니다.

Renat는 최적화 프로그램이 "시계 장치처럼" 작동하고 그 이유가 코드에 있다고 위에서 썼습니다. 그는 인쇄물을 만들기 위해 여러 번 권장했습니다. 아무도 하지 않았다는 것을 인정합니다.

직접 확인하셨나요? 단일 실행이 최적화의 일부와 다르게 작동하는 경우에 대한 명확한 예가 있습니까?

예를 들어 테스터에서 핸들을 삭제하는 것이 이전에 작동하지 않았던 것을 기억합니다. 이로 인해 시스템과 함께 메모리 오버플로 및 터미널 충돌이 발생했습니다. 이 문제는 이미 해결되었지만 표시기 핸들을 생성 및 삭제하는 데 함정이 있으며 옵티마이저의 작업과 표시기를 사용한 단일 실행에 차이가 있습니다. 개발자들이 가능한 한 속도를 높이고 메모리 소비를 최소화하는 작업을 매우 잘 수행했다는 것이 확실하게 알려져 있기 때문입니다.

 
Andrey Dik :

직접 확인하셨나요? 단일 실행이 최적화의 일부와 다르게 작동하는 경우에 대한 명확한 예가 있습니까?

이 경우 단일 실행이 아닙니다.

 
Andrey F. Zelinsky :

전역적으로 선언 된 변수의 초기화를 확인하십시오 .

초기화가 OnInit()에 있지 않지만 선언될 때와 코드에서 값이 변경된 경우.

  1. 확인했습니다.
  2. 이에 대한 변수와 변경할 수 있는 변수.
  3. 틀 렸으면 고쳐줘.
  • 변수가 선언되면 메모리가 예약됩니다.
  • 초기화되지 않은 경우 무엇이든 포함될 수 있습니다.
  • 차이점은 무엇입니까? 즉시 0으로 초기화하거나 올바른 위치에 계산 결과를 할당합니까?
  • 초기화되지 않은 변수를 사용하려고 하면 컴파일러에서 경고를 표시합니다.

간단한 예:

 int tst( int x)
{
   int y;
   if (x >= 0 )  y = 1 ;
   else
   if (x < 0 )   y = 0 ;
   return (y);		// possible use of uninitialized variable 'y'
}

.... 어떤 이유로 인해 선언이 전역 범위(((

 int y;

int tst( int x)
{
   if (x >= 0 )  y = 1 ;
   else
   if (x < 0 )   y = 0 ;
   return (y);           // никакого предупреждения уже нет...
}
'test.mq5'
code generated
0 errors, 0 warnings, 143 msec elapsed

다른걸 기대했는데...

 
Сергей Таболин :

  1. 확인했습니다.
  2. 이에 대한 변수와 변경할 수 있는 변수.
  3. 틀 렸으면 고쳐줘.
  • 변수가 선언되면 메모리가 예약됩니다.
  • 초기화되지 않은 경우 무엇이든 포함될 수 있습니다.
  • 차이점은 무엇입니까? 즉시 0으로 초기화하거나 올바른 위치에 계산 결과를 할당합니까?
  • 초기화되지 않은 변수를 사용하려고 하면 컴파일러에서 경고를 표시합니다.

간단한 예:

.... 어떤 이유로 인해 선언이 전역 범위(((

다른걸 기대했는데...

다섯 번째 페이지가 있었지만 여전히 mql5 코드가 없었습니다... 테스트와 관련하여 어둠 속에 가려진 미스터리도 있습니다: 기호, 기간, 테스트 설정.

 

자, 출력을 시작하기 전에 한 가지 더 질문합니다.

예를 들어, 나는 결과를 기록했습니다:

옵티마이저 - 구매; 판매; 판매; 구매; 구매; 판매

테스터 - 구매; 판매; 판매; 구매; 사다;팔다;팔다;사다 ;사다;팔다

이러한 " 추가 " 거래에 대한 데이터는 그들이 어느 한도에서 떨어졌는지 이해하는 데 어떻게 도움이 될까요? 아마, 당신은 이전 막대의 가격이나 다른 것을 써야합니까?

 
Vladimir Karputov :

다섯 번째 페이지가 있었지만 여전히 mql5 코드가 없었습니다... 테스트와 관련하여 어둠 속에 가려진 미스터리도 있습니다: 기호, 기간, 테스트 설정.

휴가에서 돌아온 것을 환영합니다)))

모든 것이 여기에 표시됩니다 .

 
Сергей Таболин :

  1. 확인했습니다.
  2. 이에 대한 변수와 변경할 수 있는 변수.
  3. 틀 렸으면 고쳐줘.
  • 변수가 선언되면 메모리가 예약됩니다.
  • 초기화되지 않은 경우 무엇이든 포함될 수 있습니다.
  • 차이점은 무엇입니까? 즉시 0으로 초기화하거나 올바른 위치에 계산 결과를 할당합니까?
  • 초기화되지 않은 변수를 사용하려고 하면 컴파일러에서 경고를 표시합니다.

간단한 예:

.... 어떤 이유로 인해 선언이 전역 범위(((

다른걸 기대했는데...

'x'가 double 유형 이면 주어진 예는 근본적으로 잘못된 것이고 'y' 상태는 두 경우 모두 정의되지 않습니다.

즉, 신경망의 깊이 어딘가에서 특별한 이중 값(infs, nans 또는 eps와 유사한 값)이 얻어질 수 있습니다.

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Вещественные типы (или типы с плавающей точкой) представляют значения, имеющие дробную часть. В языке MQL5 есть два типа для чисел с плавающей точкой. Способ представления вещественных чисел в машинной памяти определен стандартом IEEE 754 и не зависит от платформ, операционных систем и языков программирования. Константы с плавающей точкой...