Was in aller Welt geht hier vor? - Seite 8

 
Сергей Таболин:

Lieber, nur ein Wort, weil niemand, für den die Arbeit mit Dateien wichtig ist, bis ich es ausgedruckt habe, vorgeschlagen hat, dass dies das Problem sein könnte ;) :) Wie auch immer, das ist erledigt.

Nun eine etwas verwirrende Frage: Was ist der Unterschied zwischen den folgenden Zeilen?

   filename = "ERR_dir\\"+filename+(MQLInfoInteger(MQL_OPTIMIZATION) ? ".opt" : ".tst");
   filename = "ERR_dir\\"+filename+(MQLInfoInteger(MQL_TESTER) ? ".tst" : ".opt");

Und, wenn möglich, Erklärungen - warum?

Art der Optimierung

Tester-Modus

Der Prüfmodus schließt den Optimierungsmodus ein, aber nicht umgekehrt.

Ihre beiden Zeilen sind falsch.

Die erste:

Im Optimierungsmodus lautet die Erweiterung .opt, ansonsten .tst. Aber im Falle von "sonst" ist es vielleicht gar kein Prüfer.

Zweitens:

Im Testermodus lautet die Erweiterung .tst, ansonsten .opt. Aber im Fall von "sonst" ist es vielleicht gar kein Tester.

Richtig:

  • Wenn Tester-Modus.
    • Im Optimierungsmodus wird die Erweiterung .opt
      • andernfalls wird die Erweiterung .tst
 
Artyom Trishkin:

Optimierungsmodus

Tester-Modus

Der Prüfmodus schließt den Optimierungsmodus ein, aber nicht umgekehrt.

Ihre beiden Zeilen sind beide falsch.

Die erste:

Im Optimierungsmodus lautet die Erweiterung .opt, ansonsten .tst. Aber im Falle von "sonst" ist es vielleicht gar kein Tester.

Zweitens:

Im Testermodus lautet die Erweiterung .tst, ansonsten .opt. Aber im Fall von "sonst" ist es vielleicht gar kein Tester.

Richtig:

  • Wenn Tester-Modus.
    • Im Optimierungsmodus wird die Erweiterung .opt
      • andernfalls wird die Erweiterung .tst

das ist genug.

Es sei denn, Sie wollen prüfen, ob der EA im Chart- oder Testmodus funktioniert.

 
Andrey Dik:

Das ist genug.

Und wenn nicht ein Tester, was dann?

 
Artyom Trishkin:

Und wenn nicht ein Tester, was dann?

es hat nicht die Aufgabe, im Tester oder bei einem Diagrammlauf zu prüfen, sondern nur festzustellen, ob es sich um einen einfachen Lauf auf der Historie oder als Teil eines Optimierungspakets handelt, wenn ich TC richtig verstehe

 
Andrey Dik:

er hat nicht die Aufgabe, im Tester oder beim Diagrammlauf zu prüfen, sondern nur festzustellen, ob es sich um einen einfachen Lauf in der Historie oder als Teil eines Optimierungspakets handelt, wenn ich TC richtig verstehe

Das ist richtig. Wenn es kein Tester oder Optimierer ist, kommt es gar nicht erst hierher )))

Artem, wenn ich richtig verstanden habe, ist mein Entwurf

if(MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER))

überflüssig ist?

Es wird genug sein

if(MQLInfoInteger(MQL_TESTER))

?

 
Maxim Kuznetsov:

wenn die Datei nach COMMON geschrieben wird, ist es zwingend erforderlich, SHARE_READ und eine ziemlich schwierige Schreibkontrolle zu haben. Es ist ziemlich anständig, in der Öffentlichkeit nicht auf den Absatz zu schießen.

Im Allgemeinen ist es eine gute Praxis, dass die Berater nichts in den gemeinsamen Text schreiben. Sie können es zwar lesen, aber es wird von dem Gewerbetreibenden, der persönlich dafür verantwortlich ist, dort geschrieben oder kopiert. Für alle Expert Advisors in allen Terminals sind diese Worte von oben vorgegeben.

Wenn eine Datei in ein gewöhnliches Verzeichnis ohne SHARE_XXX geschrieben wird, aber der Optimierer Fehler beim gemeinsamen Zugriff erzeugt, dann ist das ein Fehler der Terminalentwickler

Der Expert Advisor schreibt dort also nichts, er liest nur.


P.S. Außerdem ist es der einzige, der es (bisher) liest.
 
Сергей Таболин:

Aber der Expert Advisor selbst schreibt dort nichts, er liest es nur.


P.S. Außerdem liest er nur ihn (das einzige Exemplar bisher).

Wenn in COMMON, ist SHARE_READ obligatorisch.

wie in dem Witz - "man kann es nicht verstehen, man muss es sich merken" :-)

PS/ im Prüfprogramm - es liest nicht nur von den (nach Gruppen getrennten) gemeinsamen Kopien, sondern auch von allen parallel getesteten Kopien. Übrigens ist dies auch ein möglicher Fehler - es scheint möglich zu sein, den Tester zu täuschen und einen Gral zu zeichnen

 
Maxim Kuznetsov:

wenn in COMMON, ist SHARE_READ obligatorisch.

Nun, es ist nicht obligatorisch.

Der Mehrfachzugang ist nicht so gut, wie Sie es gerne hätten.

 
Andrey F. Zelinsky:

Nun, das muss nicht sein.

Multi-Zugang ist nicht alles, was es zu sein scheint.

Ich hoffe, es gibt keine Probleme mit dem Mehrfachzugriff im schreibgeschützten Modus? Oder doch nicht?

 
Сергей Таболин:

Das ist richtig. Wenn du kein Tester oder Optimierer bist, kommst du hier gar nicht rein )))

Artem, wenn ich das richtig verstanden habe, dann ist meine solche Konstruktion

überflüssig ist?

Es wird genug sein

?

Nein, ganz im Gegenteil.
Nun, das ist, wenn Sie halbe Sachen brauchen.
Grund der Beschwerde: