Hatalar, hatalar, sorular - sayfa 101

 
Urain :

Ve falan.

if(a==0){ifade}, a'nın 0'a eşit olması durumunda doğru olduğu anlamına gelir, o zaman {ifade} çalıştırırız.

if(a=0){expression}, if(a){a=0;expression} ile eşdeğerdir, bu nedenle a true ise { a atama 0, ifade}.

ikincisi doğru değil böyle yazman daha iyi

if(a=x) { ifade } a değişkenine x değerini atayın ve bundan sonra a 0 değilse, ifadeyi yürütün

if(a=0) { } optimizasyondan sonra sadece a=0 kalacak

 
mql5 :

ikincisi doğru değil böyle yazmak daha iyi

if(a=x) { ifade } a değişkenine x değerini atayın ve bundan sonra a 0 değilse, ifadeyi yürütün

if(a=0) { } optimizasyondan sonra sadece a=0 kalacak

Sori, aynen böyle, ifadeler soldan sağa doğru yürütülür.

Bu nedenle, önce bir ödev ve sonra doğruluk için bir test vardır.

 
Renat :

Aşağı yukarı şöyle:

Bu kod yalnızca maksimum hacmi hesaplamakla kalmaz, aynı zamanda tam olarak sembol ayarlarının sınırlarına da uyar.

Bir şeyi hesaplayın - hesaplar, ancak daha sonra girerek neden hesaplandığını unutur:

   double minvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MIN );
   if (lot<minvol) lot=minvol;

Bu noktada lot değeri, mevcut tüm marjı minimum marjla tüketecek şekilde hesaplanır.

Bu değer en az bir hacim adımı kadar artırılırsa, pozisyon açmak için yeterli para olmayacaktır.

Ancak, alıntılanan kodun ikinci satırı, if altındaki koşul karşılanırsa parti değerini ARTIRIR ve hacim min = 0,1 ve hacim adımı = 0,01 fiilen gerçekleştiğinden, hacim adımı değerinden çok daha büyük bir değere kadar artırabilir.

Ve aşağıdaki kodda, koruması olmayan sıfıra bölme gerçekleşebilir:

   double stepvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_STEP );
   lot=stepvol* NormalizeDouble (lot/stepvol, 0 );

SymbolInfoDouble() 0 döndürürse, o kadar. 0'a bölündükten sonra MQL5 programları tomurcukta biter, değil mi? 0 döndüremez mi? Buradaki insanlar bilgi işlevlerinin genellikle 0 döndürdüğünden şikayet ederler. “0 döndürmez”e güvenemezsiniz, çünkü ilk olarak, geri dönebilir ve ikinci olarak, 0'a bölme ölümcüldür.

"Uygunluk doğruluğu" hakkında daha az önemli yorumlar da var, ancak gerçekten çok önemli değiller, yani çok ciddi sonuçları yok, keskinleştiremezsiniz.

Kodun "örnek niteliğinde" olduğu gerçeğiyle ilgili olası argümanları tahmin ederek şunu not ediyorum: Ürünün kaç kullanıcısı bu tür "kötü yerleri" bulup doğru şekilde düzeltebilir?

Onlar için bu, "geliştiricilerin kodudur". Bakmak için bir örnek.

 

Gerekli tüm alanlar doldurulduğunda "İleri" düğmesi neden etkin değil?

 
EvgeTrofi :

Gerekli tüm alanlar doldurulduğunda "İleri" düğmesi neden etkin değil?

Haberleri posta yoluyla almak için önceden izin vermek gerekir.
 
simpleton :

Bir şeyi hesaplayın - hesaplar, ancak daha sonra girerek neden hesaplandığını unutur:

Kodun "örnek niteliğinde" olduğu gerçeğiyle ilgili olası argümanları tahmin ederek şunu not ediyorum: Ürünün kaç kullanıcısı bu tür "kötü yerleri" bulup doğru şekilde düzeltebilir?

Kod yaklaşıktı (iki parçanın kopyala-yapıştır), ancak yorumlarınız doğru.

İşte düzeltilmiş versiyon:

 double CalculateMaxVolume( string symbol)
  {
   double price= 0.0 ;
   double margin= 0.0 ;
//--- select lot size
   if (! SymbolInfoDouble (symbol, SYMBOL_ASK ,price))                return ( 0.0 );
   if (!OrderCalcMargin( ORDER_TYPE_BUY ,symbol, 1.0 ,price,margin)) return ( 0.0 );
   if (margin<= 0.0 )                                            return ( 0.0 );

   double lot= NormalizeDouble ( AccountInfoDouble ( ACCOUNT_FREEMARGIN )/margin, 2 );
//--- normalize and check limits
   double stepvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_STEP );
   if (stepvol> 0.0 )
     {
       double newlot=stepvol* NormalizeDouble (lot/stepvol, 0 );
       if (newlot>lot) lot= NormalizeDouble (newlot-stepvol, 2 );
       else            lot=newlot;
     }

   double minvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MIN );
   if (lot<minvol) lot= 0.0 ;   // 

   double maxvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MAX );
   if (lot>maxvol) lot=maxvol;
//--- return trading volume
   return (lot);
  }
 
gumgum :

Ve neden session_index++; session_index=1 zaten yanlışsa:

Enstrüman için kaç seans önceden bilemeyiz. Bu nedenle her seansı numara ile talep ediyoruz. eğer doğruysa

session_exist= SymbolInfoSessionQuote (symbol,day,session_index,start,finish);

o zaman başlangıç ve bitiş zamanıyla ilgileniyoruz. Yanlış alındı - bu kadar, bu numarayla oturum yok.

 
Rosh :

Enstrüman için kaç seans önceden bilemeyiz. Bu nedenle her seansı numara ile talep ediyoruz. eğer doğruysa

o zaman başlangıç ve bitiş zamanıyla ilgileniyoruz. Yanlış alındı - bu kadar, bu numarayla oturum yok.

Ve ...... o zaman neden Cuma günü her şey 24:00'te bitiyor, ama gerçekte 23:00'te?
 
gumgum :
Ve ...... o zaman neden Cuma günü her şey 24:00'te bitiyor, ama gerçekte 23:00'te?
Çünkü serverda böyle. Kontrol edeceğiz, teşekkürler.
 
Anladığım kadarıyla artık profildeki e-postanı değiştirebiliyorsun? Artık E-posta alanında değişiklik yapabilirsiniz, ancak bunlar kaydedilmez!
Neden: