Hatalar, hatalar, sorular - sayfa 2888

 
Denis Diakonov :

Lütfen bana söyle!

Yeni keneler geldiğinde sunucu zamanı neden güncellenmiyor?

Danışmanı başlatma anında her şey olması gerektiği gibi çalışır, ancak daha sonra zaman geçer ve mevcut dakikanın yeni değeri değişkene girilmez.

Onlar. danışmanım int M = TimeMinute(TimeCurrent()); değişkeninin aldığı sayıya bağlı olarak çalışır.

Aslında, kod satırı referans kitabından ve hatta çalışmıyor.

Örneğin, 12 dakikada başlattım - sunucu tarafından döndürülen mevcut saat , değişkendeki zamana karşılık gelir ve daha sonra saat zaten 15-20 dakika olmasına rağmen değişken 12'de kalır.

TimeMinute(), MQL5'te mevcut değil.

MetaTrader 4'teki ilgili başlıkta MQL4 hakkında sorular sormanız tavsiye edilir.

Platformlar arası bir çözüme ihtiyacınız varsa, MqlDateTime kullanın.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Порядковый номер в году day_of_year в високосном году, начиная с марта, будет отличаться от порядкового номера соответствующего дня в невисокосном году.
 
Bazı şüpheli uyarı:
 void OnStart()
{
     for ( int i = 0 , j; i < 10 ; i = j ) //(1) Warning: possible use of uninitialized variable 'j'
    {
        j = i+ 1 ;
    }
}

hem de tamam:

 void OnStart ()
{
     for ( int i = 0 , j; i < 10 ;       ) //(2) нормально
    {
        j = i+ 1 ;
                                i = j ;
    }
}

temel fark nedir?

 
A100 :
Bazı şüpheli uyarı:

hem de tamam:

temel fark nedir?

Doğru uyarı. i'ye j değeri atandığında, j değişkeni ilk kullanımından önce başlatılmaz.

Ve ikinci varyantta, j değişkenine i + 1 değeri atanır ve ancak o zaman i = j olur.

Uyarılar olmadan böyle olması gerekir, ancak test edilmemiştir...

 void OnStart ()
{
     for ( int i = 0 , j = 0 ; i < 10 ; i = j )
    {
        j = i+ 1 ;
    }
}
 
Alexey Viktorov :

Doğru uyarı.

alternatif olarak üstün yetenekliler için - bunlar aynı döngülerdir
 
TheXpert :
alternatif olarak üstün yetenekliler için - bunlar aynı döngülerdir

Ne olmuş? Bu döngü kimliği tanımlanamayan değişkenlere izin veriyor mu?

 
Alexey Viktorov :

Ne olmuş? Bu döngü kimliği tanımlanamayan değişkenlere izin veriyor mu?

Döngüler aynıysa, derleyicinin davranışı aynı olmalıdır, ancak farklıdır. Hata burada yatıyor. (1) durumunda neden bir uyarı olduğunu açıkladınız, ardından (2) durumunda neden olmadığını açıkladınız mı? Temelde ne değişti? Ve sonra, başlatılmamış bir değişken kullanılıyorsa, o zaman yürütüldüğünde nihai sonuç neden doğrudur - bu durumda rastgele bir sayı olmalıdır.

Böyle bir bilim - mantık var. A ve B aynıysa ve A kırmızıysa, B yeşil değil kırmızı olmalıdır.

 
A100 :

Döngüler aynıysa, derleyicinin davranışı aynı olmalıdır, ancak farklıdır. Hata burada yatıyor. (1) durumunda neden bir uyarı olduğunu açıkladınız, ardından (2) durumunda neden olmadığını açıkladınız mı? Temelde ne değişti? Ve sonra, başlatılmamış bir değişken kullanılıyorsa, o zaman yürütüldüğünde nihai sonuç neden doğrudur - bu durumda aynı yerde rasgele sayı olmalıdır .

Böyle bir bilim - mantık var. A ve B aynıysa ve A kırmızıysa, B yeşil değil kırmızı olmalıdır.

Rastgele bir sayı yoktur. Sıfır var.
MQ ve düzeltildi))

 void OnStart ()
{
   int val;
   
   Print (val);
   Print ( IntegerToString (val));
}
 
Roman :

Rastgele bir sayı yoktur . Orada sıfır.
MQ ve bu düzeltildi))

İlk önce kontrol etmeniz gerekiyor - o zaman zaten "bir kar fırtınası taşıyın"

 void OnStart ()
{
         for ( int i = 0 , j; i < 10 ; i++ )
        {
                 Print ( j );
                 break ;
        }
}

Sonuç: -2052256859


 
A100 :

İlk önce kontrol etmeniz gerekiyor - o zaman zaten "bir kar fırtınası taşıyın"

Sonuç: -2052256859


 void OnStart ()
{
   for ( int i = 0 , j; i < 10 ; i++ )
   {
       Print ( j );                
   }
}
 2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0
2020.10 . 27 17 : 14 : 46.623 TestScript (NZDUSD,M1)   0

Muhtemelen VirtualBox'ta kurulu bir test terminalim olduğu için
Ayrıca derleyici, bir değişkenin başlatılmadığı konusunda uyarmaz.

Ve bu şekilde uyarıyor

 void OnStart ()
{
   for ( int i = 0 , j; i < 10 ; i++ )
   {
       Print ( IntegerToString (j) );                
   }
}
 
Roman :
Muhtemelen VirtualBox'ta kurulu bir test terminalim olduğu için

Senin rastgele numaran 0, benimki 540016640

 2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640
2020.10 . 27 17 : 24 : 25.244 0011 (EURUSD,H4)         540016640

ama yine de rastgele