Hatalar, hatalar, sorular - sayfa 1701

 
pako :
Tiki'de balık var mı?
Öğrenmek istediğim şey bu.
 
fxsaber :
Öğrenmek istediğim şey bu.

Sadece bazı lmax'larda denemek mantıklı. Ve bu şüpheli.

Hacim, duygu, cam denediniz mi? Bana daha lezzetli geliyor. En sevdiğim ticaret bir bant ve bir bardak üzerindedir, ancak bu, gün boyunca ateşle Forex'te doğrudur.

 
Комбинатор :

Yalnızca bazı lmax'larda denemek mantıklıdır. Ve bu şüpheli.

Hacim, duygu, cam denediniz mi? Bana daha lezzetli geliyor. En sevdiğim ticaret bir bant ve bir bardak üzerindedir, ancak bu, gün boyunca ateşle Forex'te doğrudur.

Exchange'i denemek istiyorum. Her nasılsa, orada ne yapılması gerektiği benim için hala açık. Ve bunun neden göstergeler şeklinde bile yapılmadığı açık değil.

Bu sadece böceklerin yavaşlaması.

 
void OnStart ()
  {
//---
   Print ( "-----------------------------   " );
   Print ( "DBL_MAX= " , DBL_MAX );
   Print ( "IntegerToString(int(DBL_MAX) )= " , IntegerToString ( int ( DBL_MAX ) ) );
   Print ( "IntegerToString(uint(MathAbs(DBL_MAX) ) )= " , IntegerToString ( uint ( MathAbs ( DBL_MAX ) ) ) );
  }

bu betiği çalıştırıyorum

ve Al

DBL_MAX= 1.797693134862316e+308

IntegerToString(int(DBL_MAX) )= -2147483648

IntegerToString(uint(MathAbs(DBL_MAX) ) )= 0

------

Soru - neden aslında pozitif bir çift sayıyı int'ye çevirirken negatif bir sayı alıyoruz?

 
Print ( "-----------------------------   " );
   Print ( "DBL_MAX= " , DBL_MAX );
   Print ( "IntegerToString(int(DBL_MAX) )= " , IntegerToString ( int ( DBL_MAX ) ) );
   Print ( "IntegerToString(uint(MathAbs(DBL_MAX) ) )= " , IntegerToString ( uint ( MathAbs ( DBL_MAX ) ) ) );
   Print ( "---" );
   Print ( "int(DBL_MAX)= " , int ( DBL_MAX ) );
   Print ( "uint(DBL_MAX)= " , uint ( DBL_MAX ) );
Ya da hala aynı.
 
fxsaber :
Sık sık yapmaktan bıkmama rağmen başvuru formunu doldurdum.
Cevaplandı ve hemen kapatıldı

Göstergenin yazarı kasıtlı olarak kendisine bir bağlantı kodladı.

Bu "hack" i yasaklayabilir veya onu kullananın vicdanına bırakabilirsiniz.

Şimdiye kadar, böyle bir fırsatın birkaç yıl içinde terminali kullanmanızı engellediği ilk kişi sizsiniz.

Boşta bu şekilde kaç gösterge yapılabilir ve bizde bunlarla ilgili ne bir söylenti ne de bir ruhumuz var?! Hiç kontrol yok.

Gönderilerinizdeki normal pathos çok net değil. Herhangi bir kitlesel ya da ciddi bir sorun söz konusu olmadığı oldukça açıktır.

1) Sadece bilerek, bilinçli olarak belirtilen davranışa sahip bir gösterge yazabilirsiniz. Kim sizi böyle bir kod yazmaya ve böyle bir gösterge çalıştırmaya zorluyor? Yoksa kodlarını bilmeden başkalarının programlarını mı çalıştırıyorsunuz?

2) Böyle bir göstergenin zararlılığı, daha az belirgin mantıksal hatalara sahip diğerlerinden daha fazla değildir.

3) Terminal yeniden başlatıldığında gösterge boşalır ve yeniden başlamaz. Yanlışlıkla böyle bir gösterge başlattıysanız, terminali yeniden başlatın. Ve bir daha koşma.

Farklı giriş parametreleriyle de olsa en az bir kopya çalışıyorsa kendimi (göstergeyi) kaldırabilmem gerekiyordu. Bunu yapmak için, kendi sapını bulmak gerekiyordu. Ne yazık ki, o zamanlar MQL'de vakaların %100'ünde bunun imkansız olduğunu henüz bilmiyordum. Bu yüzden çok zor olmayan bir numaraya gitmeye karar verdim.

Bütün kolları geçiyorum. Ve bak, CopyBuffer aracılığıyla ilk arabelleğin son değeri, kontrol etmeden önce göstergemde yazdığım rastgelelikle eşleşirse, bu otomatik olarak tanıtıcının bana ait olduğu ve gerekirse kendimi silebileceğim anlamına gelir.

Bu nedenlerden dolayı, geliştiricilerden bu kadar belirsiz, ancak açıkça olumsuz bir tepkiye neden olan bu tür zararsız kod yazıldı. Görüyorsun, bunu yapamazsın. Yasadışı ne yaptı? Tamponumun değerini CopyBuffer aracılığıyla okudum. Yasadışı?!

Topluluğun, bu şekilde, herhangi bir kodun arka planda kontrolsüz bir şekilde yürütülmesinin, hatta çizelgeleri olmayan bir terminalde bile oluşturulabileceğinin farkında olmasına izin verin. İşte bir hile. Ve bunu bir hata olarak kabul etmek ya da etmemek, görünüşe göre bir terminoloji sorunudur. Geliştiricilerin burada mimari olarak hiçbir şeyi değiştiremeyeceklerini anlıyorum. Bu nedenle, böyle bir öfke. Bu tepkiyi başka türlü açıklayamam.

Nasılsa kimse sesini çıkarmayacak. Yardım'da böyle bir komisyonu yansıtmak iyi olurdu.

 
Если вы случайно запустили такой индикатор , terminali yeniden başlatın. Ve bir daha koşma.
Bilmek imkansız. Mümkün değil!
 
Dmytro Zelenskyy :
Ya da hala aynı.

int tipinin boyutu 4 bayttır. Çift türün boyutu 8 bayttır. Bunu yapamazsınız - 8 bayttan 4 bayt almaya çalışmak - sonuç olarak, saçmalık ortaya çıkabilir - özellikle bu durumda, DBL_MAX değeri int değerlerinin sınırlarının dışında kaldığında.

Eğer double d=123456.1258 sayısını alıp ondan bir int almaya çalışırsanız sayı geçer ama yine de yapamazsınız.

 
Karputov Vladimir :

int tipinin boyutu 4 bayttır. Çift türün boyutu 8 bayttır. Bunu yapamazsınız - 8 bayttan 4 bayt almaya çalışmak - sonuç olarak, saçmalık ortaya çıkabilir - özellikle bu durumda, DBL_MAX değeri int değerlerinin sınırlarının dışında kaldığında.

Eğer double d=123456.1258 sayısını alıp ondan bir int almaya çalışırsanız sayı geçer ama yine de yapamazsınız.

Tamam, ancak işareti korurken double'ı int'ye nasıl doğru bir şekilde dönüştürebilirim (sayı önemli değildir, sınırın ötesine geçerse, o zaman int sınırıyla sınırlayın)

 
Dmytro Zelenskyy :

Tamam, ancak işareti korurken double'ı int'ye nasıl doğru bir şekilde dönüştürebilirim (sayı önemli değildir, sınırın ötesine geçerse, o zaman int sınırıyla sınırlayın)

int

Tamsayı türü int , 4 bayt (32 bit) bir boyuta sahiptir. Minimum değer -2 147 483 648, maksimum değer 2 147 483 64 7'dir . Buna dayanarak,

   int A=( int ) 214748364 7.0 ;
   int B=( int ) 214748364 6.2 ;
   int C=( int ) 214748364 7.2 ;
   int D=( int ) 214748364 8.0 ;
   Print ( "A: " , IntegerToString (A), ", B: " , IntegerToString (B), ", C: " , IntegerToString (C), ", D: " , IntegerToString (D));

bakın ne döndürüldü:

A: 2147483647 , B: 2147483646 , C: 2147483647 , D: - 2147483648

Bence ilke açık.