Fehler, Irrtümer, Fragen - Seite 3005

 
Was ist mit dem Link "Alle Nachrichten" im Profil passiert?
 
fxsaber:
Wo ist der Link zu "Alle Nachrichten" im Profil geblieben?
.
 
Alexey Viktorov:

Ich danke Ihnen!

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Nicht normalisierte Preise in MT4

fxsaber, 2021.04.30 10:42

Zwei verschiedene Zahlen, die auf die gleiche Weise in eine Zeichenkette umgewandelt werden. Ist es ein Fehler?

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
}

Die Situation ist ähnlich wie in diesem Fall.

 

Benutzerdefinierter Indikator im Unterfenster, Typ Oszillator.
Wie kann man die Standard-Null-Linie ausblenden?
Das Einfärben der Nulllinie in der grafischen Benutzeroberfläche, um sie an die Hintergrundfarbe anzupassen, funktioniert nicht.

i

Eigenschaften im Indikator einstellen, funktioniert nicht

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

Die Zahlen sind unterschiedlich, aber der Unterschied beträgt 17 Dezimalstellen, und Print verarbeitet nur 15 Dezimalstellen, so dass sie aus der Sicht von Print gleich sind

 
A100:

Die Zahlen sind unterschiedlich, aber der Unterschied liegt in der 17. Dezimalstelle, während Print nur 15 Ziffern verarbeitet, so dass sie aus Sicht von Print gleich sind.

Nur nicht Drucken, sondern Umwandlung von double in string.

 

Abbildung 1

Das ist mir aufgefallen. Wenn die Daten des Vorwärtstests wiederholt werden (dieselben), wird bei der Anzeige des Backtests für alle drei Varianten nur die Variante (10384.88) zuerst angezeigt.

Abbildung 2

Die Daten für Varianten mit Ergebnissen = 10435 oder 10843 sind unbekannt (alles in den Berichten für Variante = 10384)?


 

Können Sie mir sagen, wie man Daten aus Zeigern richtig kopiert?

Sie müssen Daten von einem Objekt in ein anderes kopieren. Löschen Sie dann das Ausgangsobjekt. Wenn Sie das Originalobjekt löschen, wird der Zugriff auf die Daten in der Kopie unzulässig.

#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));

}
 
Dort kopiert der Zeiger
Grund der Beschwerde: