Hatalar, hatalar, sorular - sayfa 288

 

Yazıyı tekrarlamamak için. Lütfen https://www.mql5.com/en/forum/2547/page1#comment_45265 adresine bakın.

orada neyi yanlış yapıyorum. her şey yazıda görünüyor. Bu standart sınıflarla nasıl çalışılacağını öğrenmek istiyorum. Ama yanlış bir şey yapıyorum :(

Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника"
Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника"
  • www.mql5.com
Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника".
 
Trolls :

Yazıyı tekrarlamamak için. Lütfen https://www.mql5.com/en/forum/2547/page1#comment_45265 adresine bakın.

orada neyi yanlış yapıyorum. her şey yazıda görünüyor. Bu standart sınıflarla nasıl çalışılacağını öğrenmek istiyorum. Ama yanlış bir şey yapıyorum :(

Orada cevaplandı.
 

fonksiyonda hata

string   DoubleToString (
    double    value ,       // число
    int       digits=8      // кол-во знаков после запятой
   );

Rakamlarla >= 12

void testDoubleToString()
  {
   int i,j,cn=11,digits=DBL_DIG+1;
   double dblVal,dblValFromStr,pres=0.1;
   string dblStr;
   Print("Start testDoubleToString cn=",cn," digits=",digits);
   for(i=1; i<=digits; i++)
     {
      for(j=2; j<cn; j++)
        {
         dblVal = 1.0/j;
         dblStr = DoubleToString(1.0/j, i);
         dblValFromStr=StringToDouble(dblStr);
         if(MathAbs(dblValFromStr-dblVal)>pres)
           {
            Print("ERROR from function DoubleToString digits: ",i," value: 1/",j," dblVal: ",
               dblVal," strVal: ",dblStr," dblValFromStr: ",dblValFromStr);
           }
        }
      pres*=0.1;
     }
  }
//---
void OnStart(){testDoubleToString();}
//---

Bana verir

DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/10 dblVal: 0.1 strVal: 1.000000000000000 dblValFromStr: 1
dblVal: 0.1111111111111111 strVal: 1.111111111111111 dblValFromStr: 1.111111111111111
DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/8 dblVal: 0.125 strVal: 1.250000000000000 dblValFromStr: 1.25
dblVal: 0.1428571428571429 strVal: 1.42857142857143 dblValFromStr: 1.42857142857143
DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/6 dblVal: 0.16666666666666667 strVal: 1.66666666666667
DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/5 dblVal: 0,2 strVal: 2.000000000000000 dblValFromStr: 2
DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/4 dblVal: 0.25 strVal: 2.500000000000000 dblValFromStr: 2.5
dblVal: 0.333333333333333 strVal: 3.33333333333333 dblValFromStr: 3.33333333333333
DoubleToString işlevinden gelen HATA basamak: 14 değer: 1/2 dblVal: 0,5 strVal: 5.00000000000000 dblValFromStr: 5
DoubleToString işlevinden HATA basamak: 13 değer: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
DoubleToString işlevinden gelen HATA basamak: 13 değer: 1/9 dblVal: 0.1111111111111111 strVal: 1.1111111111111 dblValFromStr: 1.1111111111111
DoubleToString işlevinden gelen HATA basamak: 13 değer: 1/8 dblVal: 0.125 strVal: 1.2500000000000 dblValFromStr: 1.25
dblVal: 0.1428571428571429 strVal: 1.4285714285714 dblValFromStr: 1.4285714285714
DoubleToString işlevinden HATA: 13 değer: 1/6 dblVal: 0.16666666666666667 strVal: 1.6666666666667
DoubleToString işlevinden gelen HATA basamak: 13 değer: 1/5 dblVal: 0,2 strVal: 2.0000000000000 dblValFromStr: 2
DoubleToString işlevinden gelen HATA basamak: 13 değer: 1/4 dblVal: 0,25 strVal: 2.5000000000000 dblValFromStr: 2.5
dblVal: 0.333333333333333 strVal: 3.3333333333333 dblValFromStr: 3.3333333333333
DoubleToString işlevinden gelen HATA basamak: 13 değer: 1/2 dblVal: 0,5 strVal: 5.00000000000000 dblValFromStr: 5
DoubleToString işlevinden HATA basamak: 12 değer: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/9 dblVal: 0.1111111111111111 strVal: 1.111111111111 dblValFromStr: 1.111111111111
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/8 dblVal: 0.125 strVal: 1.250000000000 dblValFromStr: 1.25
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/7 dblVal: 0.1428571428571429 strVal: 1.428571428571 dblValFromStr: 1.428571428571
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/6 dblVal: 0.16666666666666667
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/5 dblVal: 0,2 strVal: 200000000000000 dblValFromStr: 2
DoubleToString işlevinden gelen HATA basamak: 12 değer: 1/4 dblVal: 0.25 strVal: 2.5000000000000 dblValFromStr: 2.5
dblVal: 0.333333333333333 strVal: 3.333333333333 dblValFromStr: 3.333333333333
DoubleToString işlevinden HATA basamak: 12 değer: 1/2 dblVal: 0,5 strVal: 5.000000000000 dblValFromStr: 5


İşletim Sistemi: WIN7

Yapı: 387

 
BZSP :

fonksiyonda hata

string   DoubleToString (
    double    value ,       // число
    int       digits=8      // кол-во знаков после запятой
   );

Rakamlarla >= 12

Teşekkürler, bir göz atacağız.
 

Grafik alt penceresinin yüksekliği nasıl ayarlanır? eğer işlev? Yoksa sadece bir şablon mu?

 
dentraf :

Grafik alt penceresinin yüksekliği nasıl ayarlanır? eğer işlev? Yoksa sadece bir şablon mu?

Tüm işlevler yardımda açıklanmıştır.

Bir şablonla yapın.

 
В классе CArray #include <Arrays\Array.mqh> 
забыли прописать виртуальные методы Reserve()и Resize() 
 

İşte bir şaka - varsayılan olarak STRATEJİ TEST CİHAZI'nı başlattığınızda

düşük bir öncelik var, şimdi her seferinde manuel olarak orta olarak değiştirmeniz gerekiyor.


Belki de böyle olması gerekiyordu?

 

alexluek :

Belki de böyle olması gerekiyordu?

Evet, bu özellikle birden çok yerel aracıyı optimizasyon modunda çalıştırmak için yapılır.

Gerçek şu ki, test cihazı işlemciyi çok yoğun bir şekilde kullanıyor ve sistemdeki tüm çekirdeklerin %100'ünü kolayca alıyor. "Orta" önceliği bırakırsanız, aslında CPU %100 yüklenir ve terminal bile yeterli kaynağa sahip olmaz. Durum özellikle tek çekirdekli işlemcilerde kötü.

Bu nedenle, optimizasyon modunda aracılar için varsayılan değer, diğer programların çalışmasını mümkün kılan düşük önceliklidir. Bilgisayar başka bir işle meşgul değilse, düşük önceliğe sahip olsa bile, aracılar tüm işlemci kaynaklarını alacaktır (CPU önceliğini azaltmak, kaynaklarda doğrudan bir azalma anlamına gelmez).

Büyük olasılıkla önceliği "düşük"ten "ortalamanın altına" değiştireceğiz - bu, yerel aracılar optimizasyon modunda tamamen yüklendiğinde işletim sisteminin yanıt vermesini sağlamak için yeterli olacaktır.

Tek bir aracıyı çalıştırırken ve 1'den fazla çekirdeğe sahipken, bu aracının "orta" öncelik ile başlayacağına dikkat etmek önemlidir. Ek çekirdeklerin varlığında tek bir ajan tüm sistemin çalışmasını bu kadar etkileyemez.


not: ekran görüntüsüne bakın - düşük öncelikte bile CPU kullanımı %95.

 
Renat :

Evet, bu özellikle birden çok yerel aracıyı optimizasyon modunda çalıştırmak için yapılır.

....

not: ekran görüntüsüne bakın - düşük öncelikte bile CPU kullanımı %95.


not alalım. teşekkürler