Errori, bug, domande - pagina 3005

 
Cosa è successo al link "Tutti i messaggi" nel profilo?
 
fxsaber:
Dov'è finito il link a "Tutti i messaggi" nel profilo?
.
 
Alexey Viktorov:

Grazie!

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Prezzi non normalizzati in MT4

fxsaber, 2021.04.30 10:42

Due numeri diversi convertiti in stringa allo stesso modo. È un bug?

void OnStart()
{
  const double Num = 1.07299;
  const double Norm = NormalizeDouble(Num, 5);
   
  Print(Num);  // 1.07299
  Print(Norm); // 1.07299

  Print(Num - Norm); // 2.220446049250313e-16
}

La situazione è simile a questa.

 

Indicatore personalizzato nella sottofinestra, tipo oscillatore.
Come nascondere la linea zero di default?
Colorare la linea dello zero dalla GUI, per abbinare il colore dello sfondo non funziona.

i

impostazione delle proprietà nell'indicatore, non funziona

#property indicator_level1  0.0
#property indicator_levelcolor C'35,35,35'
 
fxsaber:

I numeri sono diversi, ma la differenza è di 17 cifre decimali, e Print gestisce solo 15 cifre decimali, quindi dal punto di vista di Print sono uguali

 
A100:

I numeri sono diversi, ma la differenza è la 17esima cifra decimale, mentre Print gestisce solo 15 cifre, quindi dal punto di vista di Print sono uguali.

Solo che non è la stampa, ma la conversione del doppio in stringa.

 

Figura 1

Ho notato questo. Se i dati del test forward sono ripetuti (gli stessi), quando si visualizza Backtest per tutte e tre le varianti, solo la variante (10384.88) sarà mostrata per prima.

Fig2

I dati per le varianti con risultati = 10435 o 10843 sono sconosciuti (tutto nei rapporti per la variante = 10384)?


 

Potete dirmi come copiare correttamente i dati dai puntatori?

Avete bisogno di copiare dati da un oggetto all'altro. Poi cancella l'oggetto iniziale. Quando si elimina l'oggetto originale, i dati nell'oggetto copia diventano inaccessibili.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;        // создаем объект для текущих параметров
    pCur.id = 25;               // вносим текущие данные
    ArrCur.Add(pCur);           // помещаем в массив объектов
    
    CID* pPrev = ArrCur.At(0);  // копируем данные??? Указатель???
    ArrPrev.Add(pPrev);         // помещаем в массив объектов
    
    ArrCur.Clear();             // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_INVALID
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

}
 
Lì il puntatore copia
Motivazione: