Errori, bug, domande - pagina 288

 

per non ripetere il post. Si prega di dare un'occhiata a https://www.mql5.com/ru/forum/2547/page1#comment_45265

Cosa sto sbagliando lì? Sembra essere lo stesso dell'articolo. Voglio imparare a lavorare con le classi standard. Ma sembra che io lo stia facendo male (.

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

per non ripetere il post. Si prega di dare un'occhiata a https://www.mql5.com/ru/forum/2547/page1#comment_45265

Cosa sto sbagliando lì? Sembra essere lo stesso dell'articolo. Voglio imparare a lavorare con le classi standard. Ma sembra che io lo stia facendo male (.

Ha risposto lì.
 

Un errore nella funzione

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

Se le cifre >= 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();}
//---

ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/10 dblVal: 0.1 strVal: 1.00000000000000 dblValFromStr: 1
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/9 dblVal: 0.111111111111111111 strVal: 1.111111111111 dblValFromStr: 1.111111111111
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/8 dblVal: 0.125 strVal: 1.25000000000000 dblValFromStr: 1.25
ERROR dalla funzione DoubleToString cifre: 14 valore: 1/7 dblVal: 0.1428571428571429 strVal: 1.42857142857143 dblValFromStr: 1.42857142857143
ERROR dalla funzione DoubleToString cifre: 14 valore: 1/6 dblVal: 0.1666666666666667 strVal: 1.666666666666667 dblValFromStr: 1.66666666667
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/5 dblVal: 0.2 strVal: 2.00000000000000 dblValFromStr: 2
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/4 dblVal: 0.25 strVal: 2.50000000000000 dblValFromStr: 2.5
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/3 dblVal: 0.333333333333333333 strVal: 3.33333333333333 dblValFromStr: 3.333333333333
ERRORE dalla funzione DoubleToString cifre: 14 valore: 1/2 dblVal: 0.5 strVal: 5.00000000000000 dblValFromStr: 5
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/9 dblVal: 0.1111111111111111111111 strVal: 1.1111111111111 dblValFromStr: 1.11111111111
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/8 dblVal: 0.125 strVal: 1.2500000000000 dblValFromStr: 1.25
ERROR dalla funzione DoubleToString cifre: 13 valore: 1/7 dblVal: 0.1428571428571429 strVal: 1.4285714285714 dblValFromStr: 1.4285714285714
ERROR dalla funzione DoubleToString cifre: 13 valore: 1/6 dblVal: 0.1666666666666667 strVal: 1.666666666667 dblValFromStr: 1.6666666667
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/5 dblVal: 0.2 strVal: 2.0000000000000 dblValFromStr: 2
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/4 dblVal: 0.25 strVal: 2.50000000000 dblValFromStr: 2.5
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/3 dblVal: 0.333333333333333333 strVal: 3.333333333333333 dblValFromStr: 3.3333333333333
ERRORE dalla funzione DoubleToString cifre: 13 valore: 1/2 dblVal: 0.5 strVal: 5.0000000000000 dblValFromStr: 5
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/9 dblVal: 0.111111111111111111 strVal: 1.111111111111 dblValFromStr: 1.1111111111
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/8 dblVal: 0.125 strVal: 1.250000000000 dblValFromStr: 1.25
ERROR dalla funzione DoubleToString cifre: 12 valore: 1/7 dblVal: 0.1428571428571429 strVal: 1.428571428571 dblValFromStr: 1.428571428571
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/6 dblVal: 0.16666666666667 strVal: 1.6666666666667 dblValFromStr: 1.66666666667
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/5 dblVal: 0.2 strVal: 2.000000000000 dblValFromStr: 2
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/4 dblVal: 0.25 strVal: 2.500000000000 dblValFromStr: 2.5
ERROR dalla funzione DoubleToString cifre: 12 valore: 1/3 dblVal: 0.333333333333333333 strVal: 3.33333333333333 dblValFromStr: 3.333333333333
ERRORE dalla funzione DoubleToString cifre: 12 valore: 1/2 dblVal: 0.5 strVal: 5.000000000000 dblValFromStr: 5


OS: WIN7

Costruire: 387

 
BZSP:

Un errore nella funzione

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

Quando le cifre >= 12

Grazie, daremo un'occhiata.
 

Come posso impostare l'altezza della sottofinestra del grafico? se una funzione? o solo attraverso un modello?

 
dentraf:

Come posso impostare l'altezza della sottofinestra del grafico? se una funzione? o solo attraverso un modello?

Tutte le funzioni sono descritte nell'aiuto.

Fatelo attraverso il modello.

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

Ecco una cosa divertente: quando si esegue lo STRATEGY TESTER di default

è impostato su priorità bassa, ora devo cambiarlo manualmente su media ogni volta.


Forse è così che deve essere?

 

alexluek:

Forse è così che deve essere?

Sì, è specificamente progettato per eseguire più agenti locali in modalità di ottimizzazione.

Il punto è che il tester usa la CPU molto intensamente e prende facilmente il 100% di tutti i core del sistema. Se lasciate la priorità "media", la CPU sarà caricata al 100% e anche il terminale mancherà di risorse. La situazione è particolarmente brutta con i processori single-core.

Questo è il motivo per cui l'impostazione predefinita per gli agenti in modalità di ottimizzazione è a bassa priorità, il che permette agli altri programmi di lavorare ugualmente. Se un computer non è occupato con altri lavori, allora anche a bassa priorità, gli agenti otterranno tutte le risorse della CPU (abbassare la priorità della CPU non significa ridurre direttamente le risorse).

Molto probabilmente, cambieremmo la priorità da "bassa" a "sotto la media" - questo sarebbe sufficiente per mantenere il sistema operativo reattivo sotto pieno carico con agenti locali in modalità di ottimizzazione.

È importante notare che quando si esegue un singolo agente e si ha più di 1 core, questo agente funziona a priorità "media". Un singolo agente con core aggiuntivi potrebbe non influenzare così tanto l'intero sistema.


ps: guarda il tuo screenshot - anche a bassa priorità il carico della CPU è del 95%.

 
Renat:

Sì, questo è fatto specificamente per eseguire più agenti locali in modalità di ottimizzazione.

....

ps: guarda il tuo screenshot - anche a bassa priorità il carico della CPU è del 95%.


Per favore, tenetelo a mente. Grazie
Motivazione: