Errori, bug, domande - pagina 1933

 
fxsaber:
La differenza è più di 1e-15. Inoltre, num != Norm. Sono numeri diversi, non gli stessi numeri.

Il mio MT4 emette true, true e differenza 0. ;-)

 
Stanislav Korotky:

Il mio MT4 emette true, true e differenza 0. ;-)

Si è formato un modo non documentato di distinguere MT4/5. E il bitrate di MT5 non ha niente a che fare con questo.

 
fxsaber:

Si è formato un modo non documentato di distinguere MT4/5. E il bitness di MT5 non ha niente a che fare con questo.

Oltre a questo in mql4 funziona e in mql5 nemmeno l'operazione documentata prefisso incremento(++i) e decremento (--k)

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Solo che in mql4 funziona, ma in mql5 nemmeno l'operazione documentata prefisso incremento(++i) e decremento (--k)

Non ho visto un problema

void OnStart()
{
  int i = 0;
  
  Print(i++ == 0); // true
  Print(++i == 2); // true
}
 
fxsaber:

Si è formato un modo non documentato di distinguere MT4/5. E il bitness di MT5 non ha niente a che fare con questo.

Non è nemmeno la differenza tra MT4/5, è se la #proprietà strict è abilitata.

Se è abilitato, saranno diversi, altrimenti no.

Ci sono diverse implementazioni di NormalizeDouble!
 

In quali casi si può passare reason=0 a OnDeinit negli indicatori?

 
fxsaber:
La differenza è più di 1e-15. Inoltre, Num != Norm. Sono numeri diversi, non gli stessi numeri.

E il grado zero? I gradi da 0 a -14 sono un totale di 15 cifre. Un grado di -15 è il 16° grado. Credo di sì.

 
Stanislav Korotky:

E il grado zero? I gradi da 0 a -14 sono un totale di 15 cifre. Un grado di -15 è il 16° grado. Credo di sì.

Vedere quante cifre diDBL_MIN differiscono da zero.

 

La versione Release dello script è quasi 3 volte più lenta della versione Debug.

string  PositionGetString2( const ENUM_POSITION_PROPERTY_STRING  Property_id )
{
  return(PositionGetString(Property_id));
}

#define  TOSTRING(A) #A + " = " + (string)(A)

void OnStart()
{
  if (PositionSelect(_Symbol))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = 0; i < 1 e7; i++)
    {
      PositionGetString2(POSITION_SYMBOL);
      PositionGetString2(POSITION_COMMENT);
    }
    
    Print(TOSTRING(GetMicrosecondCount() - StartTime));
  }
}

Passi per giocare

  1. Seleziona EURUSD per il debug e apri il suo grafico nel terminale.
  2. Apri una posizione su EURUSD.
  3. Avviate la versione di debug in ME premendo F5 e vedete il risultato nel log.
  4. Ricompilare in ME usando F7 - questo è molto importante, altrimenti EX5 sarà debug.
  5. Eseguite lo script Release dal terminale e visualizzate i risultati registrati.
Risultato della versione di debug

GetMicrosecondCount()-StartTime = 638537


Risultato della versione di rilascio

GetMicrosecondCount()-StartTime = 1746492
 

Quando si importano le zecche in un simbolo tkc personalizzato, i file tkc non sono leggibili.