MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1738

 
Nikolay Ivanov # :

Kodunuz -1 değil 0 yazdırır.

Belki -1 başka bir yerde basılmıştır, büyük olasılıkla tüm kod baskılardadır ..

Evet, haklısınız, her adım nerede "yavaşladığını" görmek için yazdırılır.

Örnek yanlış sonuçlandı, kusura bakmayın, kodun kendisi büyük.

Ancak Konstantin'in çözümü sorunu çözdü! Aslında, i'yi değiştirdim-- ve her yerde sıfır olup olmadığını kontrol ettim ve şimdi mantık olması gerektiği gibi çalışıyor, -1 yerine 0 veya 1 veriyor (0 veya -1'den önce, ikincisinde bir hata var) uzak).

 
Nikolay Ivanov # :

Kodunuz -1 değil 0 yazdırır.

Belki -1 başka bir yerde basılmıştır, büyük olasılıkla tüm kod baskılardadır ..

Bir sorunu çözmeye çalışmadan önce onu belirlemelisiniz.. Var olduğundan emin olun ve yerini lokalize edin ve ancak o zaman çözün..

Bir kalem ve kağıt alın. Ve döngünün nasıl hesaplandığını yazın. bu kodda

 void OnStart ()
  {
int i= 10 ;
for (i; i> 0 ; i--)
{
i--;
if (i== 0 ) break ;
}

Print (i);
  }

muayene

 if (i== 0 ) break ;

hiç bir zaman gitmeyecek. Sadece başlangıçta ayarlanmışsa

 int i= 11 ;

tek değer. Hatta, o zaman bu kodla

 int i= 10 ;
for (i; i> 0 ; i--)
{
i--;
if (i== 0 ) break ;
}

önceki

 if (i== 0 ) break ;

garip bir değer gelecek.

 
Nikolay Ivanov # :

Bir sorunu çözmeye çalışmadan önce onu belirlemelisiniz.. Var olduğundan emin olun ve yerini lokalize edin ve ancak o zaman çözün..

anladım, demek istediğim

 
Konstantin Nikitin # :

Bir kalem ve kağıt alın. Ve döngünün nasıl hesaplandığını yazın. bu kodda

Koşul print = -1 diyorsa ve aslında (kontrol ettim) 0 olarak basılmışsa, yani örnek yanlış verilmişse neden kalem kağıt alayım. Ve yanlış bir örneğe doğru cevap vermek mümkün değil...

 
Nikolay Ivanov # :

Koşul print = -1 diyorsa ve aslında (kontrol ettim) 0 olarak basılmışsa, yani örnek yanlış verilmişse neden kalem kağıt alayım. Ve yanlış bir örneğe doğru cevap vermek mümkün değil...

Sıfır bu satırdan yazdırılır

 for (i; i> 0 ; i--)

molada kontrol edip çıkmaktan değil.

Genel olarak, bir diziden geçmek için yazmak daha doğrudur.

 for (i; i > = 0 ; i--)

çünkü diziler indeks sıfırdan başlar

 
Konstantin Nikitin # :

Sıfır bu satırdan yazdırılır

molada kontrol edip çıkmaktan değil.

Verilen kod için bu satırdan 0 yazdırılır..

 Print (i);

Soru break neden çalışmıyor değildi, soru baskının neden -1 verdiğiydi .. hepsi bu. ve başlamamın çift mi yoksa tek mi olduğu önemli değil, -1 asla yazdırılmaz...

 
Söyle bana, lütfen, keneleri veya mumları uzun süre nasıl hesaplayabilirim? (örneğin yıl).

Kapat[]'ı deniyorum, ancak dizin 5000'den fazla vermiyor.
 
Ivan Butko # :
Söyle bana, lütfen, keneleri veya mumları uzun süre nasıl hesaplayabilirim? (örneğin yıl).

Kapat[]'ı deniyorum, ancak dizin 5000'den fazla vermiyor.

Tiki veya mumlar o kadar büyük bir fark ki, söylemesi korkutucu ...

 
Alexey Viktorov # :

Tiki veya mumlar o kadar büyük bir fark ki, söylemesi korkutucu ...

Burada, örneğin, bir Uzman Danışman, bunun için herhangi bir süre belirtin - test cihazından en azından keneler, en azından M1 çubukları ile geçecek, herkes bunu dikkate alacaktır.

Ve gerçek zamanlı olarak uzun bir geçmişe sürünen ve oradan veri alan bir danışman alırsanız, nasıl organize edeceğimi anlamıyorum. Terminal 5000'den fazla mum vermez.


UPD
Bu şeyi deneyeceğim, kod ağda

MqlRates rates[];

   int copied=CopyRates(NULL,0,0,100,rates);

   if(copied<=0)

      Print("Ошибка копирования ценовых данных ",GetLastError());

   else Print("Скопировано ",ArraySize(rates)," баров");


UPD
Garip. Birdenbire işe yaradı. Milyonuncu çubuk bile kontrol edildi. Hiçbir şey yapmadı, belgeleri okudu, çay içti. Sadece yeniden başlattım ve işe yaradı. Dün geçmişi yüklememe ve ayarları değiştirmeme rağmen tüm gün hata verdi.
Yani (yukarıdaki) ek kodun kontrol edilmesine gerek yoktu.
MT4 - bir çeşit mizaç. Veya ForexChif'in böyle bir özelliği var. Bir komisyoncu değil, standart bir tane koymak gerekli olacaktır.

 
Ivan Butko # :

Burada, örneğin, bir Uzman Danışman, bunun için herhangi bir süre belirtin - test cihazından en azından keneler, en azından M1 çubukları ile geçecek, herkes bunu dikkate alacaktır.

Ve gerçek zamanlı olarak uzun bir geçmişe sürünen ve oradan veri alan bir danışman alırsanız, nasıl organize edeceğimi anlamıyorum. Terminal 5000'den fazla mum vermez.


UPD
Bu şeyi deneyeceğim, kod ağda

MqlRates rates[];

   int copied=CopyRates(NULL,0,0,100,rates);

   if(copied<=0)

      Print("Ошибка копирования ценовых данных ",GetLastError());

   else Print("Скопировано ",ArraySize(rates)," баров");


UPD
Garip. Birdenbire işe yaradı. Milyonuncu çubuk bile kontrol edildi. Hiçbir şey yapmadı, belgeleri okudu, çay içti. Sadece yeniden başlattım ve işe yaradı. Dün geçmişi yüklememe ve ayarları değiştirmeme rağmen tüm gün hata verdi.
Yani (yukarıdaki) ek kodun kontrol edilmesine gerek yoktu.
MT4 - bir çeşit mizaç. Veya ForexChif'in böyle bir özelliği var. Bir komisyoncu değil, standart bir tane koymak gerekli olacaktır.

CopyRates()'e yapılan ilk çağrı, geçmiş verilerin pompalanmasını başlattı (bir hafta çalıştırmayın ve aynı şeyi tekrar alırsınız, peki, belki bir hafta değil, bir süre sonra).
Sunucuda ne kadar veri olduğunu kontrol etmeniz ve mevcut miktarı danışmanla karşılaştırmanız yeterlidir. Gerekenden azsa, bir sonraki onay işaretinden önce çıkın. Tekrar kontrol edin. Belirli sayıda deneme için gerekli geçmişi elde etmek mümkün olmadıysa, bu hatayı gerektiği gibi işleyin.