Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 115

 
A100:

Ich werde nicht schreiben, was ich kann, für den Fall, dass es sich als einfach und pavlick_ wieder

Ich kann Ihr Verhalten nicht verstehen.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL5 MT5 MetaTrader 5 Anfängern" verschoben.
 
Alexey Navoykov:
Das Casting eines Zeigers bewirkt gar nichts, denn egal wie man ihn castet, das Objekt ist dasselbe.

Ich nehme das zurück.

 

Wer versucht, auf realen Ticks zu testen, ist es notwendig, eine 1-Minuten-Historie zu erstellen, oder wird sie auf der Grundlage der heruntergeladenen Ticks(benutzerdefiniertes Symbol) gebildet werden?

Ich habe irgendwie keinen Test, ich habe sieben Tage lang Ticks hochgeladen, ich führe den Test durch, und das ist, was in den Protokollen steht:

2018.12.24 22:04:16.925 Core 1  no data synchronized, 41 bytes read
2018.12.24 22:04:16.925 Core 1  symbol EURUSD_custom synchronization error
2018.12.24 22:04:16.925 Core 1  cannot get history EURUSD_custom,M1
 
forexman77:

Wer versucht, auf realen Ticks zu testen, ist es notwendig, eine 1-Minuten-Historie zu erstellen, oder wird sie auf der Grundlage der hochgeladenen Ticks (benutzerdefiniertes Symbol) gebildet werden?

Ich bin irgendwie nicht zu testen, hochgeladen sieben Tage von Ticks, läuft der Test ist das, was in den Protokollen ist:

Bis jetzt.

 

DoubleToString für "gleiche" Preisberechnungen können unterschiedliche Ergebnisse liefern. In diesem Fall kann sich DoubleToString von NormalizeDouble unterscheiden.

#property strict

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  const double Koef =  0.25;
  const int iDelta = 32;
  const double point = 0.00001;
  
  const double high = 1.06736;
  const double low = 1.06676;
  
  const double Avg = (high + low) * 0.5;  
  const double Size = (high - low) * Koef * 0.5;
  
  // Вычисление одной и той же цены разной последовательностью сложения одного и того же количества пипсов
  const double Price1 = Avg - Size - point * iDelta;
  const double Price2 = Avg - (Size + point * iDelta);  
  
  PRINT(DoubleToString(Price1, 5));   // DoubleToString(Price1,5) = 1.06666
  PRINT(DoubleToString(Price2, 5));   // DoubleToString(Price2,5) = 1.06667

  PRINT(NormalizeDouble(Price1, 5)); // NormalizeDouble(Price1,5) = 1.06667
  PRINT(NormalizeDouble(Price2, 5)); // NormalizeDouble(Price1,5) = 1.06667
}
 
fxsaber:

DoubleToString für "gleiche" Preisberechnungen können unterschiedliche Ergebnisse liefern. In diesem Fall kann sich DoubleToString von NormalizeDouble unterscheiden.

Das beschriebene Verhalten ist kein exklusives Merkmal der Sprache MQL5. "Die Art und Weise, wie reelle Zahlen im Maschinenspeicher dargestellt werden, wird durch die Norm IEEE 754 definiert und ist unabhängig von Plattformen, Betriebssystemen und Programmiersprachen. "
 

Falls jemand eine Vorlage für eine nicht aufgelöste statische Variable benötigt, die auf https://www.mql5.com/ru/forum/1111/page2364#comment_10048274 basiert.

Das Problem wird durch die Implementierung der Methode an der Stelle der Deklaration gelöst. Das ist nicht sehr schön, aber es funktioniert.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.12.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Ilya Malev:

Falls jemand eine Vorlage für eine nicht aufgelöste statische Variable benötigt, die auf https://www.mql5.com/ru/forum/1111/page2364#comment_10048274 basiert.

Das Problem wird durch die Implementierung der Methode an der Stelle der Deklaration gelöst. Es ist nicht sehr schön, aber es funktioniert.

Sie haben dort ein zusätzliches Wort statisch. Es wird nicht außerhalb einer Klasse verwendet.

 
Alexey Navoykov:

Sie haben dort ein zusätzliches statisches Wort aufgeführt. Sie wird außerhalb des Unterrichts nicht verwendet.

(müde) Wenn das das Problem wäre, wäre die Fehlermeldung "'k' - redefinition; different type modifiers" erschienen, aber sie ist nicht auf dem Screenshot zu sehen. Der Compiler kümmert sich also nicht darum, und das ist es auch nicht.