Hatalar, hatalar, sorular - sayfa 743

 
Fia :

Merhaba geliştirici arkadaşlar!

En azından bir uyarı verilmesi için MQL5 derleyicisinde değişiklik yapmak mümkün müdür,

koddaki bu tür sövelerde.

if(Flag_Exitl=true) {break;}


Karşılaştırma koşulu burada doğru yazılmamış (== olmalıdır) ve bu nedenle break her zaman yürütülecektir.

Kod yazarken daha az tümsek doldurmak için bu durum derleyicide (mümkünse) nasıl belirlenir?

(İşe yaramayacağını düşündüm, ödev ve karşılaştırmayı ayırıyor gibi görünüyor, o zaman soru kaldırılır).

Koşulun sağda sabiti olan bir boole ataması varsa yapılabilir.
bool türündeki değişkenler true / false ile karşılaştırılamaz, ancak doğrudan kullanılır (aslında bu bir evet / hayır bayrağıdır)
if(Flag_Exitl) {break;}
Sana göre tereyağ elde edilir
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип bool - Документация по MQL5
 
notused :

4401 hatası alıyorum düzenli olarak

ERR_HISTORY_NOT_FOUND

Aşağıdaki gösterge kodu

başlangıçta hemen bir hata verecektir (D1'e atılmazsa). Veya daha doğrusu, terminali başlattıktan ve grafiği açtıktan sonra - göstergeyi koyun, bir hata alacağız. Terminal kapalı değilse, başlangıçta böyle bir hata oluşmaz.

Ama bir süre sonra (birkaç saat - 2 saat bana yeterdi) uzun süredir açık olan bir grafikte de hata aldığımızı göreceğiz. (m30'da piyasaya sürüldü)

Temsilciler, MetaQuotes, lütfen yorum yapın, olması gereken bu mu?
 
struct SDaylyRange { double min, max, open, close;};
struct SNoDaylyRange {
   uint x;
   double y;
 };

void OnStart ()
  {
   SNoDaylyRange tmp;
   SDaylyRange tmp2 = tmp;
  }
Bu kod, tek bir uyarı olmadan derlenir. Her ne kadar muhtemelen derlememeli bile.
 
notused :
..error 4401 düzenli olarak görünüyor

referans:

Veri erişiminin organizasyonu

Veri kullanılabilirliği

HCC formatında veya hatta kullanıma hazır HC formatında verilerin mevcudiyeti, her zaman bu verilerin bir çizelge üzerinde görüntülenmesi veya mql5 programlarında kullanım için koşulsuz mevcudiyeti anlamına gelmez.

mql5 programlarından fiyat verilerine veya gösterge değerlerine erişirken, bunların belirli bir zamanda veya belirli bir noktadan mevcut olmalarının garanti edilmediğini unutmayın. Bunun nedeni, kaynakları korumak için MetaTrader 5'in mql5 programı için gerekli verilerin tam bir kopyasını saklamaması, ancak terminal veritabanına doğrudan erişim sağlamasıdır.

Tüm zaman dilimleri için fiyat geçmişi, HCC formatının genel verilerinden oluşturulur ve sunucudan herhangi bir veri güncellemesi, tüm zaman dilimleri için verilerin güncellenmesine ve göstergelerin yeniden hesaplanmasına yol açar. Sonuç olarak, veriler bir an önce mevcut olsa bile verilere erişim reddedilebilir.

Kopya Oranı

İndikatörden veri istenirken, istenen zaman serileri henüz oluşturulmamışsa veya sunucudan indirilmesi gerekiyorsa, fonksiyon hemen -1 döndürür, ancak yükleme/inşa sürecinin kendisi başlatılır.
Olması gerektiği gibi görünüyor. CopyRate'den önce SERIES_SYNCRONIZED kontrol edilebilir..
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
 
Swan :

referans:

Olması gerektiği gibi görünüyor. CopyRate'den önce SERIES_SYNCRONIZED kontrol edilebilir..

Kafama kül serpiyorum - evet. Teşekkür ederim.

İki çubuk için bir istek ve yalnızca sıfır çubuğu değişse de geçmişin kullanılamaması garip olsa da. Pekala, tamam - belgelerde açıklanmışsa, o zaman bu bir hata değildir.

 

IsNewBar'ımda çıkan bir hata oluştu.

Yerine

 CopyTime (sym, period, 0 , 1 , currentTime);

yazmak zorundaydım

   if ( CopyTime (sym, period, 0 , 1 , currentTime) < 1 ) return ( false );

Ve neden birkaç saatte bir IsNewBar(PERIOD_D1) == true -> aldığımı düşündüm, buradan geçmişin kullanılamadığını öğrendim, ancak bir veya iki yıl önce yazdığım bir fonksiyon aklıma gelmedi.

 
sergeev :

Gösterge neden birden fazla arabelleğe sahip renk türleriyle (COLOR_ARROW, vb.) çalışamıyor?

kod örneği

İki DRAW_COLOR_ARROW (buf1 ve buf2) ve her bir ek renk arabelleği (clr1, clr2) ayarlayın

Aynı zamanda ikinci tampon buf2'nin çubukların Yüksek/Düşük değerlerini almasına rağmen grafikte görüntülenmediğini görüyoruz. Bu tamponun oklarının renginin = clrNONE olduğu izlenimi edinilir. Yani, rengi clr2 arabelleğine ayarlamak çalışmıyor


işte ekran. sadece buf1/clr1 değerleri görünür. İkinci tamponun değerleri, değerler alınmasına rağmen renkli olarak görüntülenmiyor.


Hata nerede?

Soru basitçe "MQL5 DNA'sında" yanıtlamak için oluşturulmuştur.

DRAW_FILLING'de ve hatta nispeten normal bir DRAW_HISTOGRAM2'de bu tür saçmalıklar (elbette çok kararlı değil, ancak hatalar var).

Bu sadece hataların kararsızlığından, SD olmadan cevaplanmanızın pek mümkün olmadığı sonucuna varıyorum.

 

Win32 için Bild 642

Yazdır işlevinde çıktı alırken yanlışlıkla dizinin ötesine geçerseniz, üç boyutlu çift dizilerle ilgili bir tür sorun ortaya çıkıyor

komut dosyası kendi başına sonsuz bir döngüye girer.

 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 ];
       out [i3][i2][i1] = f(sum + WT[i3][i2]);
      sum = 0.0 ;
      Print( "out[" ,i3, "][" ,i2, "][" ,i1, "] = " , out [i3][i2][i1]);
   }
}
Print( "sum = " ,sum);

}
//-------------------------------------------------------
double f( double x){ return ( 1 /( 1 +MathExp(-x)));}
 
IgorM :

Win32 için Bild 642

Print işlevinde çıktı alırken yanlışlıkla dizinin ötesine geçerseniz, üç boyutlu çift dizilerle ilgili bir tür sorun ortaya çıkıyor

Genel olarak, sınır dışı iki satır önce gerçekleşir

var olmayan bir öğeden üs çağırırken, büyük olasılıkla sıfır.

bir dergiye bak

 
sergeev :

Genel olarak, sınır dışı iki satır önce gerçekleşir

var olmayan bir öğeden üs çağırırken, büyük olasılıkla sıfır.

bir dergiye bak

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