Fragen von einem "Dummy" - Seite 213

 
lazarev-d-m:

Eine der einfachsten Möglichkeiten zum Einfügen

wenn Sie prüfen wollen, ob der Code funktioniert oder ob eine Bedingung erfüllt ist (d. h., ob alle Bedingungen erfüllt sind und eine Aktion durchgeführt werden muss)

Ich füge z.B. innerhalb jeder komplexen Funktion einen Alert mit unterschiedlichem Text ein, um zu prüfen, ob die Funktion überhaupt ausgeführt wurde und ob der EA sie erreicht

Vielleicht verwenden Sie einige Bedingungen und diese sind immer falsch.

Ich danke Ihnen.
Der EA funktioniert einfach nicht mehr, ohne Fehler, und nach einem Neustart des Terminals funktioniert er wieder.
Ich muss wissen, wie ich programmatisch überprüfen kann, ob es funktioniert oder nicht. Obwohl es grün ist und keine Fehler im Protokoll stehen.
Und nach dieser Prüffunktion werde ich eine Warnung oder einen Druck oder einen Kommentar eingeben.
 
G001: Können Sie mir bitte sagen, wie ich überprüfen kann, ob der Expert Advisor funktioniert oder nicht?

Das Problem ist, dass es keine Fehler im Protokoll gibt, aber der EA manchmal nicht mehr funktioniert und erst nach einem Neustart des Terminals wiederhergestellt wird.

Mir ist nicht ganz klar, wie Sie definieren, dass "der Expert Advisor manchmal nicht mehr funktioniert". Vielleicht beginnt damit nur eine Endlosschleife. Das Protokoll ist leer und der Expert Advisor arbeitet ununterbrochen. Oder vielleicht hat es eine andere besondere Eigenschaft.

 

Ich brauche eine Antwort auf die Frage in diesem Beitrag: https://www.mql5.com/ru/forum/3775/page215#comment_379520

Kennt jemand die Antwort?

 
tol64: Ich brauche eine Antwort auf die Frage in diesem Beitrag: https://www.mql5.com/ru/forum/3775/page215#comment_379520 Weiß jemand die Antwort?

Es scheint keine direkte Antwort zu geben, so dass wir uns mit Spekulationen begnügen müssen.

Der Lizenztyp kann also mit Mql5InfoInteger(MQL5_LICENSE_TYPE) herausgefunden werden. D.h. von allen möglichen Werten der Aufzählung ENUM_LICENSE_TYPE wird einer zurückgegeben. Außerdem - durch die Ausnahmemethode: Die Betriebszeitbegrenzung(LICENSE_TIME) kann nicht zusammen mit den drei vorherigen Werten der angegebenen Aufzählung zurückgegeben werden. Insbesondere darf LICENSE_TIME nicht gleichzeitig mit LICENSE_DEMO zurückgegeben werden.

Mit dieser Argumentation würde ich die Frage "Ist es implizit, dass ein kostenpflichtiges Programm für den Markt in einem Demotest zeitlich begrenzt werden kann?" negativ beantworten. Denndie Demo eines kostenpflichtigen Produkts vom Markt hat eine eigene Kennung - LICENSE_DEMO.

 
Yedelkin:

Es scheint keine direkte Antwort zu geben, so dass wir uns mit Spekulationen begnügen müssen.

Die Art der Lizenz kann also mit Mql5InfoInteger(MQL5_LICENSE_TYPE) herausgefunden werden. D.h. von allen möglichen Werten der Aufzählung ENUM_LICENSE_TYPE wird einer zurückgegeben. Außerdem - durch die Ausnahmemethode: Die Betriebszeitbegrenzung(LICENSE_TIME) kann nicht zusammen mit den drei vorherigen Werten der angegebenen Aufzählung zurückgegeben werden. Insbesondere darf LICENSE_TIME nicht gleichzeitig mit LICENSE_DEMO zurückgegeben werden.

Mit dieser Argumentation würde ich die Frage "Ist es implizit, dass ein kostenpflichtiges Programm für den Markt in einem Demotest zeitlich begrenzt werden kann?" negativ beantworten. Denndie Demo eines kostenpflichtigen Produkts vom Markt hat eine eigene Kennung - LICENSE_DEMO.

Ich denke, dass LICENSE_TIME sowohl LICENSE_DEMO als auch LICENSE_TIME enthalten kann . Ein deutliches Beispiel dafür sind Bezeichner wie MQL5_VISUAL_MODE und MQL5_TESTING. Das heißt, sie lassen uns beide wissen, dass wir uns in einem Tester befinden. ))

Ich frage mich also, was haben die Entwickler eigentlich in diesen Bezeichner eingebaut? Und wenn es generell keine Möglichkeit gibt, die Dauer einiger kostenpflichtiger Programme im Demomodus zu begrenzen, wäre es schön, wenn es eine solche Möglichkeit gäbe. Denn es kann Optionen geben, die sehr gewinnbringend sein können, um Programme für sich selbst zu nutzen, auch ohne sie zu kaufen. )))

 
tol64: Und ich denke, dass sowohl LICENSE_DEMO als auch LICENSE_TIME gleichzeitig in LICENSE_TIME enthalten sein können .

Ich stimme zu, dass ich die terminologischen Besonderheiten der Referenzmaterialien völlig übersehen habe, wodurch die Ausschlussmethode aus dem einen oder anderen Grund zu falschen Ergebnissen führen kann...Nun, zumindest wurden die Missverständnisse zu diesem Thema geäußert, und nur die Autoren dieser Auflistung können darauf antworten.

 
tol64: Und wenn es bei einigen kostenpflichtigen Programmen im Demomodus keine zeitliche Begrenzung gibt, wäre es schön, wenn es eine solche Option gäbe. Denn es kann Optionen geben, die sehr gewinnbringend sein können, um für sich selbst Programme zu nutzen, auch ohne sie zu kaufen. )))
Und diesen Vorschlag unterbreiten Sie direkt dem Service Desk. Und gleichzeitig herausfinden, wie die Dinge wirklich sind :)
 
Yedelkin:

Ich bin mir nicht ganz sicher, wie Sie feststellen, dass "der EA manchmal nicht mehr funktioniert". Vielleicht beginnt damit nur eine Endlosschleife. Das Protokoll ist leer, aber der Expert Advisor arbeitet ununterbrochen. Oder vielleicht wird eine andere Besonderheit ausgelöst.

Es gibt keine Schleifen. Es öffnet sich ziemlich oft, 10-20 mal am Tag, wenn ich Indikator-Signale auf dem Diagramm zu sehen, aber die EA hat nicht eine Position eröffnet, es bedeutet, dass es nicht funktioniert. Ich startedas Terminal neu und es funktioniert wieder.
 
G001 Wenn ich Indikatorsignale auf einem Diagramm sehe, aber der Expert Advisor keine Position eröffnet hat, bedeutet dies, dass er nicht funktioniert.

Dies ist eine Annäherung an das Thema. Es stellt sich also heraus, dass Ihr EA nicht mehr auf die Indikatorsignale reagiert? Das heißt aber nicht, dass der EA "nicht funktioniert". Vielleicht funktioniert es noch, aber nicht in der vom Autor beabsichtigten Weise.

Versuchen Sie, einen Timer mit einer Zeitspanne von z. B. 10 Minuten einzustellen. Und drucken Sie alle Indizes aus, die für Ihren Expert Advisor von Bedeutung sind. Beobachten Sie, ob sich die Zahlen im Laufe der Zeit ändern. Wenn das Protokoll auch in diesem Fall leer ist, sollten Sie sich unbedingt mit einer Kopie des Codes an den Service Desk wenden.

Zusatz. Oder hier ist eine andere Idee. Sie haben eine Stelle in Ihrem Code mit einer Bedingung wie if, nach deren Auslösung eine Handelsanfrage gesendet werden muss. Versuchen Sie z. B. die Fälle auszudrucken, in denen diese Bedingung ausgelöst oder nicht ausgelöst wurde:

if ()
  {
   ... 
   Print("Сработало условие такое-то, время такое-то");
  }
else
  {
   ...
   Print("Не сработало условие такое-то, время такое-то");
  }
 
Ich danke Ihnen. Es ist unwahrscheinlich, dass das Problem mit dem EA zusammenhängt, sonst würde die Regel zum Neustart des Terminals nicht immer funktionieren. Auch im MT4 ist das bei einigen Brokern ein Problem. Ich muss nur programmatisch überprüfen, wann es aufhört zu funktionieren, um vor dem nächsten Signal neu zu starten. Sowohl Ausdrucke als auch Kommentare hinzugefügt.