Problem mit MT4, das ein Geschäft öffnet und es dann sofort wieder schließt - Seite 5

 
7bit:

Es ist immer noch nicht bekannt, welcher EA dies verursacht.


Alles, was wir bisher gesehen haben, sind die Symptome und ein paar Theorien. Wir benötigen die Expertenprotokolle im Ordner Experten/Protokolle von allen 4 Terminals, die denselben Zeitraum abdecken, um weitere Schlussfolgerungen zu ziehen. Diese Logs könnten meine Theorie bestätigen oder widerlegen und sie werden zeigen, wer die Close-Orders sendet.

Ich dachte, er würde jeden EA auf einem anderen Konto/Terminal laufen lassen?

//Nachdem ich den Thread erneut gelesen habe, habe ich gesehen, dass er 30 EAs auf 4 Terminals laufen lässt.

//z.

 
zzuegg:

Ich dachte, er würde jeden EA auf einem anderen Konto/Terminal laufen lassen?

Wir brauchen so viele Protokolle, wie es Terminals gibt. IIRC er erwähnt 4 Terminals, die jeweils ein paar EAs laufen. Aber es ist eigentlich egal, wie viele, wichtig ist, dass man sich die Logs aller Terminals gleichzeitig ansieht.

Ein Handel, der von EA1 auf Terminal1 eröffnet wurde, könnte von EA2 auf Terminal2 geschlossen werden. EA1 würde den Handel sofort wieder öffnen und EA2 würde diesen Handel sofort wieder schließen, und zwar ad infinitum.

Das Expertenprotokoll von Terminal1 würde sich mit Einträgen über OPEN füllen und das Expertenprotokoll auf Terminal2 würde sich mit Einträgen über CLOSE füllen. In der Kontohistorie werden alle Verluste EA1 zugeschrieben, weil er derjenige ist, der den Handel eröffnet, und EA2 bleibt völlig unter dem Radar, sein Name wird in der Kontohistorie nicht erwähnt. Nur im Expertenprotokoll des Terminals, auf dem er läuft.


Ich verspreche: Wenn der angreifende EA schließlich gefunden wird, wird er der einzige sein, der nicht unter all dem gelitten hat, der einzige, der sich die ganze Zeit über gut zu verhalten schien, derjenige, der am wenigsten verdächtigt wird, wird der Schuldige sein.

 

einmal, einer meiner EA hatte ähnliche issius, der schuldige Code war:

if(Close[1]<Open[1] && Close[2] < Open[2]){
  //CLOSE ALL PROFITALBE BUYS
}

Dies geschah nur einmal... ich hatte das Glück, dass ich nur die profitablen Trades geschlossen... so mein EA machte 100Trades und schloss sie, sobald sie positiv waren.

 



Dieses Problem trat erstmals im Mai 2010 auf und betraf einen EA namens "Callibre".

Als ich morgens aufwachte, war ein Loch von 4.000 Dollar auf dem Konto, und die Registerkarte "History" brauchte ewig, um zu laden.

Ich habe mit dem Broker gesprochen und einen Auszug aus den MT4-Serverprotokollen erhalten (im Anhang).

Ebenfalls beigefügt ist ein Diagramm, das die Trades zeigt.

Aus den Serverprotokollen geht hervor, dass die Eröffnungs- und Schlussgeschäfte von demselben EA stammen.

Damals gab ich dem EA die Schuld, da ich annahm, dass das Problem nur mit diesem EA auftrat.

*** Aus dem Feld Comments im Transaktionsprotokoll des Servers kann ich ersehen, dass derselbe EA (in diesem Beispiel Callibre) die Trades eröffnet und dann sofort wieder geschlossen hat.

Das Problem verschwand 4 Monate lang und ich nahm einfach an, dass es an diesem EA lag.

In den letzten Wochen ist das Problem erneut aufgetreten, und zwar bei 4 verschiedenen EAs, die mehrere Monate lang problemlos liefen, und bei 2 verschiedenen Brokern.

Dieses Wochenende werde ich alle Kopien von MT4 deinstallieren und von Grund auf neu installieren. Ich werde auch den Experten-Ordner aufräumen und sicherstellen, dass ich die neueste Kopie von allem verwende.

Alle anderen Vorschläge sind willkommen.
 
 
peterc005:
Aus dem Feld Comments im Transaktionsprotokoll des Servers kann ich ersehen, dass derselbe EA (in diesem Beispiel Callibre) die Trades eröffnet und dann sofort wieder geschlossen hat.

Peter: Wie ich bereits erklärt habe, zeigt das Kommentarfeld an, wer den Handel eröffnet hat, aber nicht, wer ihn geschlossen hat. Dies könnte irreführend und kontraintuitiv sein und ist der Grund, warum Sie an der falschen Stelle suchen. Das Kommentarfeld wird mit dem 8. Parameter in der Funktion OrderSend() gesetzt. Das ist der Moment , in dem die Bestellung geöffnet wird. Danach ist das Kommentarfeld fixiert und kann nicht mehr geändert werden. OrderClose() erlaubt es nicht, irgendwelche Textinformationen anzugeben. Unabhängig davon, wie oder von wem die Order geschlossen wird, behält sie entweder ihren Kommentar oder wird mit [sl] oder [tp] oder einigen anderen Strings versehen, um Stoploss oder Takeprofit oder Partial Close oder Margin Call etc. anzugeben.

Eine Order, die mit OrderClose() geschlossen wird, behält ihren ursprünglichen Kommentar. Der einzige Ort, an dem Sie herausfinden können, wer OrderClose() aufgerufen hat, ist die Suche in den Expertenprotokollen aller Terminals, die zu diesem Zeitpunkt in Betrieb waren.

Hängen Sie bitte die 4 Expertenprotokolle aller 4 Terminals an, die sich im Ordner experts/logs/ auf jedem Rechner befinden, auf dem ein Terminal läuft (dies ist das Protokoll der Registerkarte "experts" jedes dieser Terminals), um herauszufinden, wer die Trades geschlossen hat. Es ist nicht der Kaliber EA.

 

Hallo 7bit, ich werde die Protokolle in Kürze hochladen.

Eine Sache, die mir in den Protokollen für die betroffenen Tage auffiel, war eine Menge dieser Fehler:

00:11:16 Memory handler: kann 160308896 Bytes Speicher nicht zuweisen

00:11:16 HistoryBase: nicht genug Speicher für 'EURGBP1' in AddTick()

Eine Google-Suche ergab, dass dies durch zu viele Balken in einem Diagramm verursacht wird. Ich hatte den Parameter Max Bars hoch eingestellt, damit ich mehr Historie herunterladen kann, aber ich habe diese Einstellung inzwischen reduziert.

Ich frage mich, ob diese Fehler die Indikatorsignale durcheinander gebracht haben, was zu Problemen bei den EAs führt?

Im Moment ist das meine Lieblingstheorie!!!

 
peterc005:

00:11:16 Memory handler: kann 160308896 Bytes Speicher nicht zuweisen

00:11:16 HistoryBase: nicht genug Speicher für 'EURGBP1' in AddTick()


Ich glaube nicht, dass dies relevant ist. Und es wird auch nicht gesagt, wer den Aufruf von OrderClose() tatsächlich durchgeführt hat.
 
7bit:
Ich glaube nicht, dass dies relevant ist. Außerdem geht daraus nicht hervor, wer den Aufruf von OrderClose() tatsächlich durchgeführt hat.

Ich vermute nach wie vor, dass ein Indikator aufgrund mangelnder Speicherressourcen nicht richtig funktioniert hat, so dass die Geschäfte geöffnet und geschlossen wurden. Wenn dies der Fall ist, wird es sehr schwer sein, dies zu beweisen.
 

Nachfolgend finden Sie Auszüge aus den beiden Logs-Ordnern, die ein Beispiel dafür sind, was passiert ist.

Bei diesem EA handelt es sich um FAP Turbo LT., den ich schon seit Jahren verwende und der sich immer gut verhalten hat.

Der Logs-Ordner zeigt, was MT4 tut, nämlich den Handel öffnen und dann schließen, in diesem Fall Geschäft Nr. 2662451

Das Seltsame ist, dass in der Experts-Log-Datei das Geschäft geöffnet und dann geändert wird, um SL und TP zu setzen, aber es gibt keinen Eintrag, der zeigt, dass es geschlossen wurde.

Ich habe mir andere Einträge im Expertenprotokoll angesehen, wenn FAP Turbo ordnungsgemäß funktioniert, und dieser EA erzeugt normalerweise definitiv einen Close-Eintrag, aber nicht in diesem Fall.

Ich habe mir alle Protokolldateien angesehen, die ich für andere Instanzen von MT4 finden konnte, aber es gibt keine anderen Hinweise auf diesen Vorgang.

Ordner MT4\Logs:

17:28:49 '103028': order was opened : #2662451 buy 0.20 EURUSDFXF at 1.2909 sl: 0.0000 tp: 0.0000

17:28:49 '103028': ändere Order #2662451 buy 0.20 EURUSDFXF bei 1.2909 sl: 0.0000 tp: 0.0000 -> sl: 1.2407 tp: 1.2929

17:29:02 '103028': schließe Auftrag #2662451 buy 0.20 EURUSDFXF bei 1.2909 sl: 1.2407 tp: 1.2929 zum Preis von 1.2906

17:29:02 '103028': Anfrage wurde vom Server angenommen


MT4\Experts\Logs Ordner:

17:28:48 FapTurbo50 EURUSDFXF,M5: open #2662451 buy 0.20 EURUSDFXF at 1.2909 ok

17:28:49 FapTurbo50 EURUSDFXF,M5: modify #2662451 buy 0.20 EURUSDFXF at 1.2909 sl: 1.2407 tp: 1.2929 ok