Wie Sie sich vor dem Kopieren von Long Trades des Testers schützen können

 

Ich grüße alle.

Die Frage steht im Titel. Das Ziel ist es, den EA vor der Verwendung mit echten Daten zu schützen, aber dennoch zu ermöglichen, dass er im Strategietester ausgeführt werden kann. Wir könnten also die Demoversion im Strategietester laufen lassen und sehen, dass sie funktioniert, aber wir wären nicht in der Lage, Trades zu kopieren, indem wir sie manuell auf ein anderes Terminal übertragen.

Das Problem ist, dass Expert Advisor Trades wochenlang dauern können. Das bedeutet, dass ein skrupelloser Benutzer eine Demoversion im Strategietester laufen lassen und die gleichen Geschäfte einen Tag später manuell in einem anderen Terminal eröffnen kann. In diesem Fall verliert er/sie nicht viel Gewinn.

Daher haben wir beschlossen, dass der Expert Advisor im Strategy Tester nur bis zu dem Datum funktionieren soll, das einen Monat vor dem aktuellen Datum liegt. Gleichzeitig muss der Expert Advisor beim Erscheinen neuer Daten immer länger im Strategy Tester arbeiten dürfen.

Ein festes Datum des Arbeitsendes im Tester ist nicht gut - Nutzer vermuten, dass die Kurse im Expert Advisor genau bis zu diesem Datum gespeichert werden, weshalb es funktioniert. Daher müssen wir das aktuelle Datum im Strategy Tester ermitteln und den Expert Advisor nur bis zu dem Datum arbeiten lassen, das einen Monat früher liegt.

Es ist schwierig, das aktuelle Datum vom Tester zu erhalten, aber wir haben es geschafft. Wir haben jedoch einen cleveren Benutzer gefunden, der die Zeit auf seinem Computer vorwärts drehte und einfach die durchgeführten Geschäfte vom Strategy Tester ablas.

Wie kann ich verhindern, dass der Tester mit den Kursen des letzten Monats arbeitet?

Was schlagen Sie, liebe Kollegen, vor zu tun?

 
Wenn Sie sich ein wenig mit WINAPI auskennen, können Sie ein Dienstprogramm schreiben, das die "Start"-Taste im Prüfgerät drückt, den Bericht speichert und von dort aus neue Abschlüsse liest. Und dann können Sie die Geschäfte im Terminal einfach duplizieren.
 

Ja, Dimitri, das geht auch ohne WinAPI, nur mit dem Skript auf AutoIT.

Nicht nur Expert Advisors, die mit täglichen Perioden arbeiten, sondern auch Expert Advisors, die mit fünfminütigen Perioden arbeiten, fühlen sich in diesem Fall nicht wohl.

Meiner Meinung nach ist die vernünftigste Lösung, den Betrieb des Prüfgeräts einen Monat vor dem aktuellen Datum einzustellen. Aber was tun, wenn das Datum auf Ihrem Computer geändert wird?

Die Idee, die ich habe, ist, irgendwie vom Tester die Echtzeit der letzten Zitate vom Terminal zu erhalten. Aber ich weiß nicht, wie man das macht. Außerdem möchte ich mich nicht mit zusätzlichen, selbst geschriebenen DLLs herumschlagen, da diese die Clients ebenfalls "verschrecken".

 
George Merts:

Ja, Dimitri, das geht auch ohne WinAPI, nur mit dem Skript auf AutoIT.

Nicht nur Expert Advisors, die mit täglichen Perioden arbeiten, sondern auch Expert Advisors, die mit Fünf-Minuten-Perioden arbeiten, beginnen sich in diesem Fall unwohl zu fühlen.

Meiner Meinung nach ist die vernünftigste Lösung, den Betrieb des Prüfgeräts einen Monat vor dem aktuellen Datum einzustellen. Aber was tun, wenn das Datum auf Ihrem Computer geändert wird?

Die Idee, die ich habe, ist, irgendwie vom Tester die Echtzeit der letzten Zitate vom Terminal zu erhalten. Aber ich weiß nicht, wie man das macht. Außerdem möchte ich mich nicht mit zusätzlichen, selbst geschriebenen DLLs herumschlagen, da diese die Clients ebenfalls "verschrecken".

Das Datum im Terminal wird nicht übersetzt. TimeCurrent() liefert die letzte Serverzeit.
 
Dmitiry Ananiev:
Das Datum im Terminal lässt sich nicht übersetzen. TimeCurrent() liefert die aktuelle Serverzeit.

TimeCurrent() wird also im Tester simuliert... Oder übersehe ich etwas? Sie müssen die tatsächliche aktuelle Zeit des Prüfgeräts kennen, nicht wahr?

Theoretisch können Sie WebRequest verwenden, um die tatsächliche aktuelle Zeit von einem Server (einschließlich Ihres eigenen) abzufragen. Und die Anforderung an die Teststrategie wäre, die Adresse dieses Servers in das Terminal einzugeben.

 
Игорь Герасько:

TimeCurrent() wird also im Tester simuliert... Oder übersehe ich etwas? Sie müssen die tatsächliche aktuelle Zeit vom Prüfgerät erfahren.

Sie können die aktuelle Zeit Ihres Computers vom Tester abfragen.

Das einzige Problem besteht darin, dass ein Benutzer mit böswilligen Absichten diese drastisch verändern kann.

Idealerweise könnten Sie WebRequest verwenden, um die tatsächliche aktuelle Zeit von einem Server (einschließlich Ihres eigenen) abzufragen. Und die Anforderung an die Teststrategie wäre, die Adresse dieses Servers in das Terminal einzugeben.

WebRequest wird im Strategie-Tester nicht ausgeführt.
 

George Merts:

Daher ist es notwendig, das aktuelle Datum im Tester zu erhalten und dem EA nur zu erlauben, bis zu einem Datum zu arbeiten, das einen Monat weniger ist.

--

[Es gab einen cleveren Benutzer, der die Zeit auf seinem Computer vorstellte und die abgeschlossenen Geschäfte des Testers in aller Ruhe las.

Holen Sie sich die Zeit von einer dritten, unabhängigen Partei - entweder per DLL oder per WebRequest, wie oben empfohlen. Ich vermute, dass es keine anderen Möglichkeiten gibt.
 
Igor Konyashin:
Holen Sie sich die Zeit von einer dritten, unabhängigen Partei - entweder per DLL oder WebRequest, wie oben empfohlen. Ich vermute, dass es keine anderen Möglichkeiten gibt.
WebRequest ist, wie sich herausstellt, in Strategy Tester nicht anwendbar. Ja, es ist sehr traurig, aber bis jetzt fällt mir nichts anderes ein als eine selbstgeschriebene DLL... Und es sieht so aus, als ob Sie nur das Datum der letzten empfangenen echten Kurse des Terminals kennen müssten...
 
George Merts:

Es ist möglich, die aktuelle Uhrzeit des Computers über das Prüfgerät zu ermitteln.

Das einzige Problem besteht darin, dass ein Benutzer mit böswilligen Absichten diese drastisch verändern kann.

Das ist es, was ich meine. Außer, dass TimeCurrent() auch im Testgerät nicht funktioniert.
WebRequest wird im Strategie-Tester nicht ausgeführt.
Ich wusste nichts davon. Vielen Dank für die Informationen.
 
Игорь Герасько:
Das ist es, was ich damit sagen will. Allerdings funktioniert TimeCurrent() auch in der Testversion nicht.
TimeCurrent() - funktioniert überhaupt nicht, es liefert nicht die aktuelle Computerzeit, sondern die Kurszeit, die von den Einstellungen des Strategietesters abhängt.
 
George Merts:
TimeCurrent() - funktioniert überhaupt nicht, es gibt nicht die aktuelle Computerzeit zurück, sondern die Kurszeit, die von den Einstellungen des Strategietesters abhängt.
Welche Einstellungen sollte ich vornehmen und wo? TimrCurrent() - Serverzeit. Im Tester ist es die Serverzeit, die die Ankunftszeit anzeigt. Solange ich Eulen schreibe, habe ich sie nie an die lokale Computerzeit gebunden.
Grund der Beschwerde: