Merkmale der Sprache mql4, Feinheiten und Techniken - Seite 17

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Merkmale der Sprache mql5, Tipps und Tricks

fxsaber, 2019.02.20 07:26

Die Preise sind nicht in allen Testmodi normalisiert!

Um es milde auszudrücken, ist dies ein Fehler im Tester.


Ob das auch für den Birt-Mode gilt, weiß ich nicht.

 

Entschuldigen Sie, wenn dies nicht zum Thema gehört (ich kann nicht behaupten, dass ich die Sprachentwicklung verfolge), aber könnten Sie genau erklären, was diese Zeile bewirkt?

#property strict

Lassen Sie mich das erklären.

Es gibt ein Skript, das zwei (in MT identische) Preise vergleicht.

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

In MT sind die Preise gleich, aber die Differenz ist nicht gleich Null (wie oben geschrieben).

Wenn diese Zeile(#property strict) entfernt wird, ist die Differenz gleich Null.

Und warum?

 
Dmitry Rannev :

Entschuldigung, wenn dies nicht zum Thema gehört (ich kann nicht behaupten, dass ich die Sprachentwicklung verfolge), aber könnten Sie erklären, was genau diese Zeile bewirkt?

Lassen Sie mich das erklären.

Es gibt ein Skript, das zwei (in MT identische) Preise vergleicht.

In MT sind die Preise gleich, aber die Differenz ist nicht gleich Null (wie oben geschrieben).

Wenn diese Zeile ( #property strict) entfernt wird, ist die Differenz gleich Null.

Und warum?

" #property strict" ist nur bei mql4 sinnvoll. Mit mql5 ist es nutzlos, da der Modus "strict" immer wahr ist.
 
Alain Verleyen:
" #property strict" ist nur bei mql4 sinnvoll. Mit mql5 ist es nutzlos, weil "strict" immer wahr ist.

Dies ist der MT4, über den wir hier sprechen. Das Problem der Normalisierung wurde weiter oben bereits erörtert. Wir versuchen zu verstehen, warum einige Preise in MT4 gleich sind und im Vergleich dazu nicht. Dies ist eine Fortsetzung von.

 
Dmitry Rannev:

Genau darum geht es bei MT4. Das Problem der Normalisierung wurde weiter oben bereits erörtert. Wir versuchen zu verstehen, warum einige Preise in MT4 gleich sind und im Vergleich dazu nicht. Dies ist eine Fortsetzung.

Dimitri, dieses Thema ist völlig abgenutzt. Verzeihen Sie mir, wenn ich ein Geheimnis verrate, aber Sie haben Leute wie Kirill alias Programmierer, Sergei ... Ich werde den Nachnamen nicht nennen, "er ist zu berühmt, um ihn zu verraten" © Sie wissen es alle...

 
Dmitry Rannev:

Entschuldigen Sie, wenn dies nicht zum Thema gehört (ich kann nicht behaupten, dass ich die Sprachentwicklung verfolge), aber könnten Sie genau erklären, was diese Zeile bewirkt?

Lassen Sie mich das erklären.

Es gibt ein Skript, das zwei (in MT identische) Preise vergleicht.

In MT sind die Preise gleich, aber die Differenz ist nicht gleich Null (wie oben geschrieben).

Wenn diese Zeile(#property strict) entfernt wird, ist die Differenz gleich Null.

Warum?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


Die Strenge hat keinen Einfluss auf die Gleichheit. Nur bei Print - zeigt entweder grob oder genauer die Zahl an.

 
Dmitry Rannev:

In MT sind die Preise gleich, aber die Differenz ist nicht Null (wie oben geschrieben).

Wenn diese Zeile(#property strict) entfernt wird, ist die Differenz gleich Null.

Zahlen vom Typ Double können nicht auf Gleichheit geprüft werden (einschließlich Null), wir müssen ihre Differenz mit dem Mindestwert vergleichen(DBL_EPSILON, FLT_EPSILON, Point)

 
Ilya Malev:

Zahlen vom Typ double können nicht auf Gleichheit geprüft werden (einschließlich Null), man muss ihre Differenz mit dem Mindestwert vergleichen(DBL_EPSILON, FLT_EPSILON, Point)

Das ist nicht das, worüber wir reden.

 
fxsaber:

Es geht um etwas anderes.

Ich habe versucht, mir vorzustellen, was die Ursache für die Frage war, und bin zu dem Schluss gekommen, dass es sich um einen Fehler im Algorithmus handeln könnte und nicht nur um eine Frage zu Print.

 
Ilya Malev:

Ich habe versucht, mir vorzustellen, was das Problem verursacht hat, und bin zu dem Schluss gekommen, dass es sich um einen Fehler im Algorithmus handeln könnte und nicht nur um eine Frage des Drucks.

Das Problem wurde von fxsaber oben beschrieben. Wir versuchen, die Ursache zu finden.

Grund der Beschwerde: