Gemeinsam lernen und schreiben in MQL5 - Seite 37

 
Dimka-novitsek:
Ich danke Ihnen! Der aktuelle Geld- und Briefkurs ist Null. Deal Ticket . Kartenbestellung. Richtig, da ist Papa.
Was ist der Retcode? Was bedeutet er?
 

Danke !!! Ich werde mir den Retcode ansehen!

DANKESCHÖN!!!! Ich hab's! Nirgendwo ohne dich.

 

Hallo.

Ich bin auf dieses Problem gestoßen, das ich überhaupt nicht verstehe. Können Sie erklären, warum NormalizeDouble() in diesem Fall nicht immer funktioniert?

   for ( x = .... ) {
      close = tf_rates[x].close;
      close = NormalizeDouble(close, 4 );
   }

Ich fügeder Datei Preis- und andere Daten für den aktuellen Zeitrahmen hinzu. Etwa 10% aller Einträge sind Zeichenfolgen wie:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Das Ergebnis ist unabhängig von der Normalisierungsreihenfolge, ich ersetze 1, 2, 3, 4, 5, Ziffern - alles das gleiche. Wo liegt das Problem?

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
wtvirtual:

Hallo.

Ich bin auf dieses Problem gestoßen, das ich überhaupt nicht verstehe. Können Sie erklären, warum NormalizeDouble() in diesem Fall nicht immer funktioniert?

Ich fügeder Datei Preis- und andere Daten für den aktuellen Zeitrahmen hinzu. Etwa 10% aller Einträge sind Zeichenfolgen wie:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Das Ergebnis ist unabhängig von der Normalisierungsreihenfolge, ich ersetze 1, 2, 3, 4, 5, Ziffern - alles das gleiche. Wo liegt das Problem?

Es gibt keinen Hinterhalt. So sehen einige normalisierte Werte aus. Siehe den Abschnitt über diese Funktion im Referenzhandbuch.
 
Yedelkin:
Es gibt keinen Hinterhalt. So sehen einige normalisierte Werte aus. Siehe den Abschnitt über diese Funktion im Referenzhandbuch.
Nun, im Referenzhandbuch gibt es nur einen Hinweis auf die Ausgabe mit Print. Nehmen wir an, dass sich nicht nur diese Funktion, sondern auch alle anderen "normalisieren". Wie sollten wir diesen Wert als Preise in einem schwebenden Auftrag anzeigen?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
wtvirtual:
Nun, im Handbuch gibt es nur einen Hinweis auf die Ausgabe mit Print.

Welche Funktion verwenden Sie also, um diese normalisierten Werte auszugeben? :) - Ah, ich verstehe. Lesen aus einer Datei. In dem Beispiel aus dem Referenzhandbuch druckt die Funktion Print() die Zahl einfach "so wie sie ist".

wtvirtuell:
Nehmen wir an, dass sich nicht nur diese Funktion, sondern auch alle anderen "normalisieren". Und wie sollen wir dann einen solchen Wert in Form von Preisen an einen schwebenden Auftrag senden?

Und genau so sollte es auch dargestellt werden. Was ist für die Bestellung erforderlich? - Normalisierte Preise. Also normalisieren wir sie und bestehen. Und es ist nicht unser Problem, wie diese normalisierten Preise aussehen, wenn sie gedruckt werden).

Wenn Sie außerdem "Preise für den aktuellen Zeitraum" ausgeben, bedeutet dies, dass genau diese Preise mit einer großen Anzahl von Nachkommastellen als normalisierte Preise auf dem Server akzeptiert werden... Das ist sozusagen meine Schlussfolgerung, aber ich kann keine Gegenargumente finden.

 
wtvirtual:

Hallo.

Ich bin auf dieses Problem gestoßen, das ich überhaupt nicht verstehe. Können Sie erklären, warum NormalizeDouble() in diesem Fall nicht immer funktioniert?

Ich füge der Datei Preis- und andere Daten für den aktuellen Zeitrahmenhinzu. Etwa 10% aller Einträge sind Zeichenfolgen wie:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Das Ergebnis hängt nicht von der Reihenfolge der Normalisierung ab, ich ersetze 1, 2, 3, 4, 5, Ziffern - alles das gleiche. Wo liegt das Problem?

Man kann es so erklären: Versuchen Sie, die Zahl 1/3 in Dezimalform aufzuschreiben - es wird nicht funktionieren (nicht genug Papier, Kleister und Leben).
Früher oder später werden Sie eine kleine Ungenauigkeit in Kauf nehmen und den Wert abrunden.
Dasselbe geschieht mit reellen Zahlen in binärer Form (wie sie der Computer darstellt).
Wenn es keine Möglichkeit gibt, die Zahl mit einer Mantisse von 52 Bit darzustellen (z. B. 0,53680), liegt eine "leichte" Ungenauigkeit vor...
 

Hallo, könnten Sie mir bitte sagen, wie man eine Variable korrekt als Typ deklariert? Hier ist ein Beispiel für die Benennung von Funktionen.

string OrderType() {
string Si=";
POSITION_TYPE Type; bool Bull=false;
Bull =PositionGetInteger(POSITION_TYPE,Type);
wenn ( Bull ) {
if ( Type==POSITION_TYPE_BUY) Si="OP_BUY";
if ( Type==POSITION_TYPE_SELL) Si="OP_SELL";
return (Si); }

ORDER_TYPE ORType;
Bull =OrderGetInteger(ORDER_TYPE,ORType);
wenn ( Bull ) {
if ( Type==ORDER_TYPE_BUY_LIMIT ) Si = OP_BUY_LIMIT;
if ( Type==ORDER_TYPE_SELL_LIMIT) Si="OP_SELL_LIMIT";
if ( Type==ORDER_TYPE_BUY_STOP) Si="OP_BUY_STOP";
if ( Type==ORDER_TYPE_SELL_STOP) Si="OP_SELL_STOP";
return (Si); }

}

Vielleicht ist etwas falsch damit, zum Beispiel habe ich nicht versucht, die Werte von PositionGetInteger und OrderGetInteger Funktionen auf diese Weise zu erhalten.

 
Dimka-novitsek:

Guten Tag, könnten Sie mir bitte sagen, wie man eine Variable korrekt als Typ deklariert? Hier ist ein Beispiel für ein Funktions-Overlay.

Vielleicht gibt es etwas falsch mit ihm überhaupt, zum Beispiel, ich habe nicht versucht, die Werte der PositionGetInteger und OrderGetInteger Funktionen auf diese Weise zu erhalten.

Über welche Variable sprechen wir?
 
POSITION_TYPE Type Oh, mein Computer wird langsamer, ich habe fast 40 Sekunden gebraucht, um ihn einzugeben!