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

 
IgorM :
예, 알아요. 실행할 때 오류를 일으키지 않지만 스크립트를 반복하는 코드를 제공했습니다.

당신이 인쇄 마지막이 추론되지 않습니까?

또는 끝에서 두 번째?

마지막 지수 의 전화가 끊기지 않습니까?

알고리즘이 어떤 라인에 도달합니까?

여기저기 지문을 찍어두셨나요?

 
sergeev : 귀하의 인쇄물 에 마지막 것이 표시되지 않습니까?

예 출력되지 않습니다

 2012.05.27 23:44:15	34 (EURUSD,M15)	Abnormal termination
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 2 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 1 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 0 ][ 7 ] = 0.02401042497265053
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 6 ][ 7 ] = 0.6115035058049522
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 5 ][ 7 ] = 0.6315711056280579
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 4 ][ 7 ] = 0.2054980719299829
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 3 ][ 7 ] = 0.5596305561874292
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 2 ][ 7 ] = 0.3623413658485376
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 1 ][ 7 ] = 0.8933844140595046
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 0 ][ 7 ] = 0.9005057454076223
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 2 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 1 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 0 ][ 7 ] = 0.02401042497265053
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 6 ][ 7 ] = 0.6115035058049522
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 5 ][ 7 ] = 0.6315711056280579
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 4 ][ 7 ] = 0.2054980719299829
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 3 ][ 7 ] = 0.5596305561874292
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 2 ][ 7 ] = 0.3623413658485376
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 1 ][ 7 ] = 0.8933844140595046
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 0 ][ 7 ] = 0.9005057454076223
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 2 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 1 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 0 ][ 7 ] = 0.02401042497265053
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 6 ][ 7 ] = 0.6115035058049522
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 5 ][ 7 ] = 0.6315711056280579
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 4 ][ 7 ] = 0.2054980719299829
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 3 ][ 7 ] = 0.5596305561874292
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 2 ][ 7 ] = 0.3623413658485376
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 1 ][ 7 ] = 0.8933844140595046
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 0 ][ 7 ] = 0.9005057454076223
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 2 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 1 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 2 ][ 0 ][ 7 ] = 0.02401042497265053
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 6 ][ 7 ] = 0.6115035058049522
2012.05 . 27 23 : 44 : 14      34 (EURUSD,M15) out [ 1 ][ 5 ][ 7 ] = 0.6315711056280579
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 1 ][ 3 ][ 7 ] = 0.5596305561874292
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 1 ][ 2 ][ 7 ] = 0.3623413658485376
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 1 ][ 1 ][ 7 ] = 0.8933844140595046
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 1 ][ 0 ][ 7 ] = 0.9005057454076223
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 10      34 (EURUSD,M15) out [ 2 ][ 2 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 09      34 (EURUSD,M15) out [ 0 ][ 1071644672 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 09      34 (EURUSD,M15) out [ 2 ][ 5 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 09      34 (EURUSD,M15) out [ 2 ][ 4 ][ 7 ] = 0.5
2012.05 . 27 23 : 44 : 09      34 (EURUSD,M15) out [ 2 ][ 3 ][ 7 ] = 0.5
 
IgorM :

예 출력되지 않습니다

나는 질문을 반복합니다 - 당신은 2/3/8의 지수를 계산합니까?

그리고 여전히 이상해 보인다

 1071644672
그것이 어디에서 온 것인가?
 
sergeev : 질문을 반복합니다. 2/3/8의 지수를 계산합니까?

다음과 같이 했습니다.

 int i1,i2,i3;
double out [ 3 ][ 7 ][ 7 ];
for (i1= 0 ;i1< 7 ;i1++) out [ 0 ][ 0 ][i1] = inp[i1];
double sum;
sum = 0.0 ;
for (i3= 0 ;i3< 3 ;i3++){
   for (i2= 0 ;i2< 7 ;i2++){
       for (i1= 1 ;i1< 7 ;i1++)  sum += W[i3][i2][i1] * out [i3][i2][i1- 1 ];
       if (i3== 2 && i2== 3 && i1== 8 ) Print( "неправильный вызов exp!!!!" );
       out [i3][i2][i1] = f(sum + WT[i3][i2]);
      sum = 0.0 ;
      Print( "out[" ,i3, "][" ,i2, "][" ,i1, "] = " , out [i3][i2][i1]);
   }
}
Print( "sum = " ,sum);

저널에서:

2012.05.27 23:55:30     34 (EURUSD,M15) array out of range in '34.mq5' (180,7)

주석 처리된 경우: // if (i3== 2 && i2== 3 && i1== 8 ) Print ( "wrong call to exp!!!!" );

무한 루프가 다시있을 것입니다 :)

 
IgorM :

주석 처리된 경우: // if (i3== 2 && i2== 3 && i1== 8 ) Print( "wrong exp call!!!!" );

무한 루프가 다시있을 것입니다 :)

루프가 끝난 후 i1은 7이지만 세 번째 차원의 최대 인덱스는 6입니다. 이론상 범위를 벗어났어야 하지만 그렇지 않은 경우 선이

out[i3][i2][i1] = f(sum + WT[i3][i2]);

값을 덮어쓸 수 있습니다(예: i2). 그러나 이 경우 이것은 mql 컴파일러의 오류입니다.

예를 들어, 배열의 정의를 전역 변수 로 이동할 수 있습니다. 그러면 위 코드의 동작이 변경되어야 합니다.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
IgorM :

무한 루프가 다시있을 것입니다 :)

나는 그 오류가 여전히 인쇄물에 그대로 있다고 생각합니다.

그 앞의 줄에 무엇이 있는지 찾으십시오. 마지막 지수 가 실행되어서는 안 되기 때문입니다. 지수 초과

문제가 귀하의 코드에 있다고 생각합니다.

Документация по MQL5: Математические функции / MathExp
Документация по MQL5: Математические функции / MathExp
  • www.mql5.com
Математические функции / MathExp - Документация по MQL5
 
sergeev : 문제가 귀하의 코드에 있다고 생각합니다.
첨부된 이 형식에서 스크립트는 무한 루프에 들어갑니다.
파일:
34.mq5  7 kb
 
sergeev :

그리고 여전히 이상해 보인다

 1071644672
그것이 어디에서 온 것인가?
이 숫자를 바이너리 형식으로 다시 작성하면 솔루션에 조금 더 가까워질 수 있다고 생각합니다.
 
IgorM :
첨부된 이 형식에서 스크립트는 무한 루프에 들어갑니다.

나는 Zero Devide를 가지고 있어, 프린트가 있어도, 없어도

 double f( double x){ return ( 1 /( 1 + MathExp (- 1 *x)));}
일반적으로 i1은 잘못된 값을 취합니다. out[][][7] 호출은 범위를 벗어나야 합니다. 분명히 컴파일러는 각 차원이 아니라 모든 차원(3 * 7 * 7 = 147)의 곱을 기반으로 한계를 계산합니다. i1에 8이 할당된 경우 - 모두 동일하므로 Print 는 일부 값을 표시합니다. 배열 경계를 확인할 때 확실히 컴파일러 오류입니다.
 
notused :
분명히 컴파일러는 각 차원이 아니라 모든 차원(3 * 7 * 7 = 147)의 곱을 기반으로 한계를 계산합니다. i1에 8이 할당된 경우 - 모두 동일하므로 Print는 일부 값을 표시합니다. 배열 경계를 확인할 때 확실히 컴파일러 오류입니다.

범위를 벗어남은 컴파일러에서 발행하지 않습니다. 이것은 런타임 오류 입니다.

집행 시스템은 오프셋을 어리석게 계산했으며 잘못된 인덱스가 계산에 포함되었지만 배열을 벗어나지 않았다면 아무 일도 일어나지 않을 것입니다. 인덱스가 각각 개별적으로 현명한 방식으로 확인되면 실행 중에 특정 브레이크를 얻습니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5