Hatalar, hatalar, sorular - sayfa 744

 
IgorM :
evet biliyorum ve çalıştırıldığında hataya neden olmayan ancak betiği döngüye sokan bir kod verdim

size Yazdır son çıkarılmıyor mu?

veya sondan bir önceki?

ve son üssün çağrısı kapanmıyor mu?

algoritma hangi çizgiye ulaşır?

her yere parmak izi mi koydun?

 
sergeev : göstermiyor mu?

evet çıktı değil

 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 :

evet çıktı değil

Soruyu tekrarlıyorum - üssü 2/3/8 için hesaplıyor musunuz?

ve hala garip görünüyor

 1071644672
Bu nereden?
 
sergeev : tekrarlıyorum - 2/3/8 için üssü hesaplıyor musunuz?

şöyle yaptı:

 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);

dergide:

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

yorum yapıldıysa: // if (i3== 2 && i2== 3 && i1== 8 ) Print ( "exp için yanlış çağrı!!!!" );

yine sonsuz bir döngü olacak :)

 
IgorM :

yorum yapıldıysa: // if (i3== 2 && i2== 3 && i1== 8 ) Print( "yanlış exp çağrısı!!!!" );

yine sonsuz bir döngü olacak :)

Üçüncü boyutun maksimum indeksi 6 olmasına rağmen, döngünün bitiminden sonra i1 7'dir. Teoride, aralık dışında olmalıdır, ancak değilse, o zaman hattın

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

değerin üzerine yazabilir, örneğin i2. Ancak bu durumda, bu mql derleyicisinde bir hatadır.

Örneğin, bir dizinin tanımını global değişkenlere taşıyabilirsiniz - o zaman yukarıdaki kodun davranışı değişmelidir.

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

yine sonsuz bir döngü olacak :)

Hatanın hala baskıda olduğunu düşünüyorum.

önündeki satırlarda ne olduğunu öğrenin. çünkü son üs çalıştırılmamalıdır. indeks aşıyor

Bence sorun senin kodunda.

Документация по MQL5: Математические функции / MathExp
Документация по MQL5: Математические функции / MathExp
  • www.mql5.com
Математические функции / MathExp - Документация по MQL5
 
sergeev : Sanırım sorun senin kodunda.
ekli, bu formda komut dosyası sonsuz bir döngüye girer
Dosyalar:
34.mq5  7 kb
 
sergeev :

ve hala garip görünüyor

 1071644672
Bu nereden?
Bu sayıyı ikili biçimde yeniden yazarsanız çözüme biraz daha yaklaşabileceğinizi düşünüyorum.
 
IgorM :
ekli, bu formda komut dosyası sonsuz bir döngüye girer

Bir baskıyla bile, onsuz bile, üzerinde Zero Devide var

 double f( double x){ return ( 1 /( 1 + MathExp (- 1 *x)));}
Genel olarak, i1 yanlış değeri alır. Out[][][7] çağrısının menzil dışında olmasına rağmen. Görünüşe göre derleyici, her birinin değil, tüm boyutların (3 * 7 * 7 = 147) çarpımına dayalı sınırları hesaplar. i1'e 8 atanmışsa - hepsi aynı, Yazdır bazı değerleri görüntüler. Dizi sınırlarını kontrol ederken kesinlikle bir derleyici hatası.
 
notused :
Görünüşe göre derleyici, her birinin değil, tüm boyutların (3 * 7 * 7 = 147) çarpımına dayalı sınırları hesaplar. i1'e 8 atanmışsa - hepsi aynı, Yazdır bazı değerleri görüntüler. Dizi sınırlarını kontrol ederken kesinlikle bir derleyici hatası.

Aralık dışı derleyici tarafından verilmez. Bu bir çalışma zamanı hatasıdır .

Yürütme sistemi ofseti aptalca hesapladı ve hesaplamaya yanlış indeksler dahil edildiyse, ancak dizinin ötesine geçmediyseniz, hiçbir şey olmayacak. İndeksler akıllı bir şekilde, her biri ayrı ayrı kontrol edilirse, yürütme sırasında belirli frenler alırız.

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