Hatalar, hatalar, sorular - sayfa 811

 
abeiks :

Tünaydın.

MQL5'i anlamaya çalışıyorum.   exp_tema.mq5 ayrıştırıldı ve kodu yeniden düzenledi. Şimdi her mumun MA günlüğüne yazdırılmalıdır (son 20 ). Ancak günlüğün neden bazı girişleri eksik olduğunu anlamıyorum. fark edildi ,   günlükte ma[3] yoksa, o zaman ma[13] olmayacaktır. Bu neden oluyor? Hata nerede?

Tam burada

 if ( CopyBuffer (Handle[Number], 0 , 0 , 20 ,ma)< 0 )

açıkça eksik kontroller:

  1. Hesaplanan Barlar >= 20
  2. Kopya Arabelleği==20
Dosyalar:
exp_tema.mq5  27 kb
 
sergeev :

bir vizyoner olmanıza gerek yok.

Günlükte ara değişkenlerin neye eşit olduğunu görebilmemiz için kodda ayrıntılı bir Print yapın.

#property copyright "Copyright 2011, "

#property link      " http://www.mql5.com "
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   double Vhod=0;
      Print("Начало_Vhod="+DoubleToString(Vhod,2));
   Vhod=linfunc(15);
      Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
double  linfunc(double b) // имя функции и список параметров
  {
   double a=1;

   while((a/b)<1 && !IsStopped())//-------------------
     {
      Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
      a=a+1;
     }
   Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
   Print("a+b="+DoubleToString(a+b,2));
         double f=a+b;
         // составной оператор
         return(f);           // возвращаемое значение
         }
//+------------------------------------------------------------------+

İşte kod.

İşte onun baskısı

GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
ÇF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10,00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 (EURUSD,M1) 18:11:17 End_Vhod=0,00
NH 2 1 (EURUSD,M1) 18:11:24 hata ayıklama sonlandırıldı

 
Fia :


EX5 hata ayıklamasını editörden değil, doğrudan terminalde çalıştırırsanız - aynı sonuç mu?

Hata ayıklama EX5'i ekleyebilir misiniz?

 
Fia :

İşte onun baskısı

GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
ÇF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10,00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 (EURUSD,M1) 18:11:17 End_Vhod=0,00
NH 2 1 (EURUSD,M1) 18:11:24 hata ayıklama sonlandırıldı

Oynanabilir değil.

 2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   Конец_Vhod= 30.00
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   a+b= 30.00
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 15.00 , b= 15.00 , a/b= 1.00
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 14.00 , b= 15.00 , a/b= 0.93
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 13.00 , b= 15.00 , a/b= 0.87
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 12.00 , b= 15.00 , a/b= 0.80
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 11.00 , b= 15.00 , a/b= 0.73
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 10.00 , b= 15.00 , a/b= 0.67
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 9.00 , b= 15.00 , a/b= 0.60
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 8.00 , b= 15.00 , a/b= 0.53
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 7.00 , b= 15.00 , a/b= 0.47
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 6.00 , b= 15.00 , a/b= 0.40
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 5.00 , b= 15.00 , a/b= 0.33
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 4.00 , b= 15.00 , a/b= 0.27
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 3.00 , b= 15.00 , a/b= 0.20
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 2.00 , b= 15.00 , a/b= 0.13
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   а= 1.00 , b= 15.00 , a/b= 0.07
2012.08 . 16 18 : 42 : 34      Test_001 (GBPUSD,M15)   Начало_Vhod= 0.00

Win7x64

MT5 x64 yapı 687

 
alexvd :

EX5 hata ayıklamasını editörden değil, doğrudan terminalde çalıştırırsanız - aynı sonuç mu?

Bir hata ayıklama EX5 ekleyebilir misiniz?

Evet, ilginç çıkıyor, bir test cihazından çalıştırırsam, danışman olarak yazdırmak için de 30 verirse 30 verir.

Hata ayıklamaya geri dönersem 0 var.


MetaSürücü

Hangi yapıda ve hangi formda (ifade için özür dilerim) ortaya çıktı.

Yine de, hiç kimse bu mucizeyi yeniden üretemezse, muhtemelen vidyushka'yı düzenlemek gerekli olacaktır.

Dosyalar:
1.ex5  5 kb
 
alexvd :

Tam burada

açıkça eksik kontroller:

  1. Hesaplanan Barlar >= 20
  2. Kopya Arabelleği==20

Teşekkürler, eklemeye çalışacağım.

 

İşte bir video (sadece orada, 720'den daha yüksek bir çözünürlük seçin, aksi takdirde her şey sabunla uyanır)

https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be

Win7 64bit MT5 687 yapı

Öğrendiğim gibi, dönüşün 0 ürettiği etki yalnızca hata ayıklayıcıda gerçekleşiyor gibi görünüyor.

Aynı zamanda, yalnızca "çağrı ile adım" düğmesini kullanırsanız, işe yarıyor gibi görünüyor.

while döngüsüne girip "step to the gun" butonu ile çıkarsanız 0 çıkışında stabil çalışmıyor.

Genel olarak, videoda her şey görünür, ancak nasıl olunacağı ve ne yapılacağı hala benim için net değil (ve neden sadece benimle?)

 
Fia :
Win7 64bit MT5 687 yapı
Terminalin bitliği nedir?
 

Optimizasyon sırasında anlaşılmaz karakterler çıktı

Dikey Optimizasyon Grafiği sekmesinde tüm değerler -1'dir.

 
alexvd :

Tam burada

açıkça eksik kontroller:

  1. Hesaplanan Barlar >= 20
  2. Kopya Arabelleği==20

Ancak, hala arabelleklerle ilgili sorunlarım var, okudum - her şey açık, ancak kodda nasıl kullanılacağı çok açık değil. Zor değilse, bunu koda yapıştırabilir misin?