Ich habe eine EA, die die OnTimer-Veranstaltung verwendet und funktioniert gut auf meine Konten mit zwei Maklern. Allerdings habe ich gerade ein RoboForex-Konto eröffnet, und die gleiche EA funktioniert nicht, weil die OnTimer-Ereignishandler nicht getroffen wird (hinzugefügt Debug-Code beweist es). Hat jemand anderes dieses Problem oder ist es nur ich finde ich es schwer zu glauben, dass RoboForex eine teilweise funktionale Version von MQL4 bereitstellen, aber ich finde es ebenso schwer zu verstehen, warum es nicht funktioniert an diesem Makler nur ich habe kontaktiert RoboForex auf Das Thema, aber der Befragte deutlich nicht verstehen, die Frage, und konnte nicht belästigt werden, um jemanden, der - völlig unbrauchbar OnTimer () wurde in OnInit () - Funktion initialisiert und danach die Timer () - Funktion lokal. Nicht auf dem Broker-Server oder anderswo. Es muss etwas anderes sein. Bitte posten Sie den Code. OnTimer () wird in OnInit () Funktion initialisiert und danach die Funktion Timer () lokal ausgeführt. Nicht auf dem Broker-Server oder anderswo. Es muss etwas anderes sein. Bitte posten Sie den Code. Ich würde normalerweise mit Ihnen völlig übereinstimmen, aber das ist nicht meine Erfahrung. Beiliegend ist eine Zip-Datei mit einem Test-EA in ihrer einfachsten Form zusammen mit den resultierenden Log-Dateien aus einem meiner Konten (auf denen die volle EA funktioniert) und aus meinem RoboForex-Account. Sie werden feststellen, dass es im ersten Fall alle 60 Sekunden Protokolleinträge gibt, während im RoboForex-Fall, obwohl es zwischen 7 und 7 Minuten zwischen Initialisierung und De-init gibt, keine OnTimer-Datensätze vorhanden sind. Wayside48: Ich würde normalerweise mit Ihnen völlig übereinstimmen, aber dies ist nicht meine Erfahrung. Beiliegend ist eine Zip-Datei mit einem Test-EA in ihrer einfachsten Form zusammen mit den resultierenden Log-Dateien aus einem meiner Konten (auf denen die volle EA funktioniert) und aus meinem RoboForex-Account. Sie werden feststellen, dass es im ersten Fall alle 60 Sekunden Protokolleinträge gibt, während im RoboForex-Fall, obwohl es zwischen 7 und 7 Minuten zwischen Initialisierung und De-init gibt, keine OnTimer-Datensätze vorhanden sind. Sie ea wird deinitialisiert, die den Timer tötet. Dies ist auch ein lokales Ereignis wie die anderen 2. Sie ea wird deinitialisiert, die den Timer tötet. Dies ist auch ein lokales Ereignis genau wie die anderen 2. Ja, es wird deinitialisiert, wenn ich es aus dem Diagramm zu entfernen - es sollte noch 7 eine Minute Ereignisse zwischen initialisiert und deinitialisiert aufgezeichnet haben. Wenn Sie sich den Code ansehen, notiere ich die Initialisierungszeit, die Zeit der Deinitialisierung und die Zeit jedes OnTimer-Ereignisses zwischen. Im Arbeitsfall werden die einminütigen OnTimer-Ereignisse korrekt aufgezeichnet. Auf dem RoboForex-Protokoll befinden sich NO-OnTimer-Ereignisse, die 7 Minuten später zwischen Initialisierung und De-Initialisierung aufgezeichnet wurden. Ja, es wird deinitialisiert, wenn ich es aus dem Diagramm zu entfernen - es sollte noch 7 eine Minute Ereignisse zwischen initialisiert und deinitialisiert aufgezeichnet haben. Wenn Sie sich den Code ansehen, notiere ich die Initialisierungszeit, die Zeit der Deinitialisierung und die Zeit jedes OnTimer-Ereignisses zwischen. Im Arbeitsfall werden die einminütigen OnTimer-Ereignisse korrekt aufgezeichnet. Auf dem RoboForex-Protokoll befinden sich NO-OnTimer-Ereignisse, die 7 Minuten später zwischen Initialisierung und De-Initialisierung aufgezeichnet wurden. Die Funktion OnTImer () funktioniert nicht im Tester. Sorry, um stumpf zu sein, ich weiß, dass Sie versuchen zu helfen, aber. Ich bin nicht mit ihm in der Tester, und ich habe nie gesagt, dass ich war. Ich habe Ihnen zwei Protokolldateien von der Probe EA, die ich gesendet generiert. Beide waren von der EA auf LIVE-Konten unter LIVE-Bedingungen. Einer berichtet OnTimer-Ereignisse jede Minute, der andere (RoboForex) ist NICHT - es ist die SAME EA, die auf zwei verschiedenen LIVE-Konten in REAL TIME läuft. Sie begannen mit dem Nicht-Möglich, aber ich würde vorschlagen, dass ich bewiesen habe, dass das RoboForex-Terminal irgendwie keine OnTimer-Ereignisse generiert - das ist, wo ich anfing. Ich kann nicht erklären, warum ich suchte Hilfe aus dem Forum, aber es scheint, dass ist keine Hilfe entweder Danke trotzdem, wenn ich eine Antwort finden Ill post es hier. Sie havent bewiesen alles, warum sind Sie mit isOptimzed in diesem Stück Code haben Sie überprüfen, die ich an meine erste Antwort Timer-Funktion läuft lokal und wird nicht von Broker betroffen, auch an Wochenenden, wenn Märkte geschlossen sind Ich benutze Ontimer, um die ea laufen Berechnungen, um nächste Einträge zu finden. Ich habe auch eas, wo die ontimer generiert arteficial Zecken die auch leben, ohne eine Live-Markt zu ernähren. Wenn Sie nicht finden, eine Lösung und glauben, dass es ein Bug dann schreiben Sie bitte an servicedesk. Auch sollten Sie eine einfachere Route, um Dinge zu testen, es gibt zu viele Dinge zwischen dribbeln eine einfache In der Timer-Funktion sollte ein direkter Ansatz, um zu überprüfen, ob der Timer läuft, anstatt das Schreiben in Dateien und all das. Hmm Interessant tatsächlich - vielen Dank dafür. Wie Sie von meinen Protokolldateien gesehen haben, ist es sicherlich nicht funktioniert in meiner RoboForex-Umgebung. Es ist auf einer VPS, deren CPU kämpft ein bisschen, so dass ich frage mich, ob die Ereignisse wurden in der Warteschlange für zu lange, aber ich hatte es läuft seit über einer Stunde und nicht ein einziges Ereignis aufgezeichnet wurde. Ich denke, mein nächster Schritt wird es sein, es auf meiner lokalen Maschine anstatt der VPS versuchen. Nochmals vielen Dank für Ihre Bemühungen. Hmm Interessanterweise - vielen Dank dafür. Wie Sie von meinen Protokolldateien gesehen haben, ist es sicherlich nicht funktioniert in meiner RoboForex-Umgebung. Es ist auf einer VPS, deren CPU kämpft ein bisschen, so dass ich frage mich, ob die Ereignisse wurden in der Warteschlange für zu lange, aber ich hatte es läuft seit über einer Stunde und nicht ein einziges Ereignis aufgezeichnet wurde. Ich denke, mein nächster Schritt wird es sein, es auf meiner lokalen Maschine anstatt der VPS versuchen. Nochmals vielen Dank für Ihre Bemühungen. Theres immer, dass etwas, dass die Menschen nicht sagen, vorne. Sie havent bewiesen alles, warum sind Sie mit isOptimzed in diesem Stück Code haben Sie überprüfen, die ich an meine erste Antwort Timer-Funktion läuft lokal und wird nicht von Broker betroffen, auch an Wochenenden, wenn Märkte geschlossen sind Ich benutze Ontimer, um die ea laufen Berechnungen, um nächste Einträge zu finden. Ich habe auch eas, wo die ontimer generiert arteficial Zecken die auch leben, ohne eine Live-Markt zu ernähren. Wenn Sie nicht finden, eine Lösung und glauben, dass es ein Bug dann schreiben Sie bitte an servicedesk. Auch sollten Sie einen einfacheren Weg, um Dinge zu testen Dinge gibt es zu viele Dinge zwischen dribbeln eine einfache In der Timer-Funktion sollte ein direkter Ansatz, um zu überprüfen, ob der Timer läuft, anstatt das Schreiben in Dateien und das alles. Ich habe den Handel erlaubt, weil die EA Im mit tatsächlich auf dem Konto handeln funktioniert gut. In jedem Fall, warum das die Existenz des OnTimer-Ereignisses beeinflussen Die writeToLog () - Methode ist einfach eine, die ich überall und ist gut getestet und ist in dieser Situation durch die Tatsache, dass die Initialisierung Nachrichten geschrieben werden. Die IsOptimization () ist nur dort, also versucht es nicht, Protokolldateien während der Optimierung zu schreiben. Ich bin einverstanden - ich habe OnTimer überall verwendet (seit mehreren Jahren) und hatte keine Probleme mit ihm bis jetzt. Ich weiß, es ist kein Fehler, weil es funktioniert in allen, sondern meine RoboForex-Umgebung. Wie auch immer, Nguyen Nga hat bewiesen, dass auf seinem RoboForex-Account es funktioniert (Protokollierung und alle), so muss es auf meine Umgebung bezogen werden. Sie behaupten, dass ihre lokalen - auch ja seine eine Funktion der MQL4-Framework, aber soweit ich weiß, gibt es keinen Grund, warum RoboForex nicht über ihre eigene Version des Frameworks, die aus irgendeinem Grund nicht unterstützt die OnTimer-Ereignis. Um ehrlich zu sein, wenn das der Fall wäre, hätte ich einen respektablen Programmierer erwartet, eine NotImplemented-Ausnahme in Reaktion auf die EventSetTime () - Methode zu werfen, aber Sie wissen es nie. Ich habe den Handel erlaubt, weil die EA Im mit tatsächlich auf dem Konto handeln funktioniert gut. In jedem Fall, warum das die Existenz des OnTimer-Ereignisses beeinflussen Die writeToLog () - Methode ist einfach eine, die ich überall und ist gut getestet und ist in dieser Situation durch die Tatsache, dass die Initialisierung Nachrichten geschrieben werden. Die IsOptimization () ist nur dort, also versucht es nicht, Protokolldateien während der Optimierung zu schreiben. Ich bin einverstanden - ich habe OnTimer überall verwendet (seit mehreren Jahren) und hatte keine Probleme mit ihm bis jetzt. Ich weiß, es ist kein Fehler, weil es funktioniert in allen, sondern meine RoboForex-Umgebung. Wie auch immer, Nguyen Nga hat bewiesen, dass auf seinem RoboForex-Account es funktioniert (Protokollierung und alle), so muss es auf meine Umgebung bezogen werden. Sie behaupten, dass ihre lokalen - auch ja seine eine Funktion der MQL4-Framework, aber soweit ich weiß, gibt es keinen Grund, warum RoboForex nicht über ihre eigene Version des Frameworks, die aus irgendeinem Grund nicht unterstützt die OnTimer-Ereignis. Um ehrlich zu sein, wenn das der Fall wäre, hätte ich einen respektablen Programmierer erwartet, eine NotImplemented-Ausnahme in Reaktion auf die EventSetTime () - Methode zu werfen, aber Sie wissen es nie. Ich habe keine Ahnung, welche Framework Sie sprechen. Die OnTimer-Funktion läuft auf dem lokalen Prozessor-Taktgeber, es gibt keine Weise für roboforex, oder irgendein Vermittler für diese Angelegenheit, um das zu manipulieren. Es ist ganz einfach, und das ist der Grund, warum ich zu bleiben: Nun, Im Angst, was ich sagte, ist möglich. Ich klammerte mich an Strohhalme eher mit dem überbelasteten CPU-Vorschlag, aber es stellt sich heraus, das Problem zu sein. Es scheint, dass RoboForex einen wirklich schlechten VPS Service zur Verfügung stellt. Ich habe zwei Instanzen der MT4-Terminal läuft auf und die CPU-Auslastung saß bei 100 mehr oder weniger dauerhaft. Wie ich schon sagte, verließ ich meinen Test EA läuft über eine Stunde und nicht eine einzige OnTimer Veranstaltung durch, um es, obwohl OnTick Veranstaltungen durch, obwohl ich habe keine Ahnung, wie spät Allerdings habe ich gerade wieder versucht heute und die OnTick-Ereignisse werden durch - der Unterschied ist, dass die CPU nur rund 70 besetzt ist aufgrund des Mangels an Trading Traffic (keine OnTick-Ereignisse). Sogar 70 ist völlig lächerlich unter den Umständen - ich habe ein anderes ähnliches specs VPS (Einzelkern Intel Xeon bei 2GHz mit 1G RAM), das mit dem gleichen einzelnen MT4 Instanzbetrieb verbraucht gerade 1 CPU im Augenblick und während der Woche Spitzen zu herum 20. Also, ich weiß nicht, ob das OnTick-Ereignis hat größere Priorität als OnTimer, aber seine etwas zu sehen, wenn Sie auf OnTimer verlassen und Ihre CPU ist besetzt Nun, Im Angst, was ich sagte, ist möglich. Ich klammerte mich an Strohhalme eher mit dem überbelasteten CPU-Vorschlag, aber es stellt sich heraus, das Problem zu sein. Es scheint, dass RoboForex einen wirklich schlechten VPS Service zur Verfügung stellt. Ich habe zwei Instanzen der MT4-Terminal läuft auf und die CPU-Auslastung saß bei 100 mehr oder weniger dauerhaft. Wie ich schon sagte, verließ ich meinen Test EA läuft über eine Stunde und nicht eine einzige OnTimer Veranstaltung durch, um es, obwohl OnTick Veranstaltungen durch, obwohl ich habe keine Ahnung, wie spät Allerdings habe ich gerade wieder versucht heute und die OnTick-Ereignisse werden durch - der Unterschied ist, dass die CPU nur rund 70 besetzt ist aufgrund des Mangels an Trading Traffic (keine OnTick-Ereignisse). Sogar 70 ist völlig lächerlich unter den Umständen - ich habe ein anderes ähnliches specs VPS (Einzelkern Intel Xeon bei 2GHz mit 1G RAM), das mit dem gleichen einzelnen MT4 Instanzbetrieb verbraucht gerade 1 CPU im Augenblick und während der Woche Spitzen zu herum 20. Also, ich weiß nicht, ob das OnTick-Ereignis hat größere Priorität als OnTimer, aber seine etwas zu beobachten, wenn Sie sich auf OnTimer und Ihre CPU ist beschäftigt Warum versuchen Sie nicht und benchtest, dass Server, um zu sehen, ob es richtig funktioniert. In dem Stück Code Sie zur Verfügung gestellt. Dies kann nie zu einer Belastung von 70 CPU führen, es sei denn, Sie stecken in einer Endlosschleife. Zum Beispiel Ich laufe meine Roboter, Ohne Probleme. Herunterladen MetaTrader 5 Copyright 2000-2017, MQL5 Ltd.
No comments:
Post a Comment