Datenaustausch zwischen zwei MT4-Terminals?

 

Hallo!


Ich möchte die folgende Strategie umsetzen: "Forks on the difference in quotes from different brokerage companies:

Die Strategie ist sehr einfach: Sie können die gegensätzlichen Kurse auf das gleiche Instrument bei zwei Maklerunternehmen setzen und warten, bis die Kurse in die richtige Richtung divergieren, dann können Sie beide Wetten schließen und insgesamt einen Gewinn erzielen (der Wert der abweichenden Kurse muss größer sein als die Gesamtkommission der beiden Maklerunternehmen).


Diese Strategie ist schon lange nicht mehr neu, aber ich habe sie noch nicht gesehen. Ich möchte es benutzen.


Das Hauptproblem ist die Notwendigkeit, jederzeit die Kurswerte für beide Brokerfirmen gleichzeitig zu kennen, und der Expert Advisor arbeitet nur mit einem Terminal (einer Brokerfirma).

D.h. in jedem MT4-Terminal läuft ein Expert Advisor und dieser Expert Advisor kennt nur seine Kurse und die seines Nachbarn, und wir kennen dessen Kurse nicht!

Wir müssen dafür sorgen, dass beide EAs die Kurse des jeweils anderen kennen, d.h. sie können Daten miteinander austauschen.


Ich möchte, dass sie mir mitteilen, was sie darüber wissen. Ich möchte auch einige Rückmeldungen erhalten.


Ich habe mir 2 Möglichkeiten für den Datenaustausch ausgedacht:


1) die trivialste: Schreiben von Daten in eine Datei und Lesen dieser Datei durch einen anderen Expert Advisor. Im Grunde genommen ist es sehr einfach zu machen. Das einzige Problem ist, dass der Expert Advisor nur Dateien aus "seinem Verzeichnis" lesen und schreiben kann. Aber alles kann mit dll gelöst werden.

Es gibt einen weiteren großen Nachteil: die niedrige Umtauschgeschwindigkeit. Kann nicht mit der Geschwindigkeit des Schreibens und Lesens aus dem Speicher verglichen werden(((.


2) Ich bin mir nicht sicher, was Sie tun können (da ich kein sehr guter Programmierer bin), aber hier würde ich gerne von Programmierern lernen:

Weisen Sie einen Platz im Speicher zu und schreiben Sie dort Anführungszeichen. Die Adresse dieses Platzes ist beiden EAs bekannt, so dass sie diesen Platz sowohl lesen als auch beschreiben können.

Natürlich wird diese gesamte Technologie durch eine DLL implementiert.

3) Ich habe auch GlobalAddAtom gefunden, aber wie man eine Dll mit ihm schreiben?


Wenn sich jemand für die Strategie interessiert und sie auch umsetzen möchte, dann kontaktieren Sie mich bitte, ich werde meine Arbeit gerne teilen!

 
Eine solche Strategie könnte ein trauriges Ende nehmen http://www.kroufr.ru/forum/index.php/topic,6265.0.html
 
Und wie stellen Sie sich diese Art der Arbeit mit einer DLL vor?
 
geopoint:
Eine solche Strategie könnte ein trauriges Ende nehmen http://www.kroufr.ru/forum/index.php/topic,6265.0.html
Ich verstehe es nicht wirklich, oder? Es geht wahrscheinlich darum, dass der DC sich einfach verpissen kann, wenn er es herausfindet, nicht wahr?
 
D500_Rised:
Und wie stellen Sie sich diese Art von Arbeit durch DLL vor?

Ich glaube nicht, dass die Standardmittel von MQL4 in der Lage sein werden, den Austausch vorzunehmen. Aber wenn Sie wissen, wie es geht, teilen Sie es uns bitte mit!

Und mit Hilfe von dll könnten Sie zum Beispiel eine Funktion einbinden, die Dateien aus einem beliebigen Verzeichnis lesen kann, nicht nur aus einem!

 

dlls von jedem Terminal verweisen weiterhin auf dieselbe gemeinsame Datei. Meines Erachtens wird dies eine Reihe von Fehlern verursachen, die zu einem instabilen Betrieb eines solchen Systems führen. IMHO.

Haben Sie sich das Multiterminal angesehen? Ist es möglich, sich gleichzeitig mit verschiedenen Servern zu verbinden?

Ein Gedanke kam mir in den Sinn: Wenn Multiterminal mit mehreren Konten arbeiten kann, dann kann es wahrscheinlich auch gleichzeitig mit dem echten und dem Demoserver arbeiten. Was passiert, wenn wir die Adresse des Demoservers durch die echte Serveradresse eines anderen Maklerunternehmens ersetzen?

 
D500_Rised:

dlls von jedem Terminal verweisen weiterhin auf dieselbe gemeinsame Datei. Meines Erachtens wird dies eine Reihe von Fehlern verursachen, die zu einem instabilen Betrieb eines solchen Systems führen. IMHO.

Haben Sie sich das Multiterminal angesehen? Ist es möglich, sich gleichzeitig mit verschiedenen Servern zu verbinden?

Ein Gedanke kam mir in den Sinn: Wenn Multiterminal die Möglichkeit hat, mehr als ein Konto zu verwalten, dann ist es vielleicht möglich, gleichzeitig mit dem echten und dem Demoserver zu arbeiten. Was passiert, wenn wir die Adresse des Demoservers durch die echte Serveradresse eines anderen Maklerunternehmens ersetzen?

Keine Fehler, da ich diesen Weg durch die Datei bereits zurückgelegt habe. Die Dateien sind 2, d.h. jeder EA hat seine eigene Datei, in der er die Kurse speichert, und die EAs lesen gegenseitig ihre Dateien. Die Hauptsache ist, dass das Lesen und Schreiben korrekt erfolgt (der Expert Advisor liest immer dieselbe Datei und schreibt immer in dieselbe Datei). Ich stimme zu, dass die Stabilität schlechter sein wird, als wenn man sich auf den Speicher bezieht.


Das Multiterminal verfügt nicht über eine solche Option, und selbst wenn es sie gäbe, können Sie dort keine EAs ausführen. Möchten Sie ein solches System manuell implementieren? (Ich weiß es nicht)

 
D500_Rised:

Haben Sie sich das Multiterminal angesehen? Ist es möglich, sich gleichzeitig mit verschiedenen Servern zu verbinden?


keine
 

Ich frage mich, ob es möglich ist, write_1---read_2, write_2---read_1 zeitlich zu ordnen.

Wie wird der Prozess geordnet, damit die EAs nicht auf dieselbe Datei treffen, können sie zuvor gelesene Daten von neuen Daten unterscheiden (erfordert zusätzliche Zeit für die Identifizierung)

Und ist das Spiel im Allgemeinen die Mühe wert? Wenn es einen Unterschied in den Zitaten geben wird, sprechen gleich mehrere Dinge gegen dieses Spiel:

1- 2 Spreads (2*2-4 Pips)

2- Ausrutschen.

3- Geringe tatsächliche Ausführungsgeschwindigkeit der Aufträge(während der Bearbeitung des Händlerauftrags kann sich der Preis ändern und die positive Differenz aufheben) + Requotes

usw.

 
D500_Rised:

Ich frage mich, ob es möglich ist, write_1---read_2, write_2---read_1 zeitlich zu ordnen.

Wie wird der Prozess geordnet, damit die EAs nicht auf dieselbe Datei treffen, können sie zuvor gelesene Daten von neuen Daten unterscheiden (erfordert zusätzliche Zeit für die Identifizierung)

Und ist das Spiel im Allgemeinen die Mühe wert? Wenn es einen Unterschied in den Zitaten geben wird, sprechen gleich mehrere Dinge gegen dieses Spiel:

1- 2 Spreads (2*2-4 Pips)

2- Ausrutschen.

3- Geringe tatsächliche Ausführungsgeschwindigkeit der Aufträge (während der Bearbeitung des Händlerauftrags kann sich der Preis ändern und die positive Differenz aufheben) + Requotes

usw.

Dies ist kein Problem, da der eine EA ständig in eine Datei schreibt und der andere EA ständig aus dieser Datei liest, und es spielt keine Rolle, in welcher Reihenfolge dies geschieht. Um die Relevanz der Daten zu prüfen, habe ich die Ortszeit verwendet, d. h. die Zitate werden alle 100 Millisekunden geschrieben und dann anhand der Ortszeit auf Relevanz geprüft.


Zum Thema "Kerzenständer": Ich kenne die genaue Antwort nicht, deshalb möchte ich sie überprüfen. Ich bin eher von quantitativen Daten überzeugt. Wenn der Gesamtspread 4 Pips beträgt und die Divergenz 10 Pips, dann können wir sogar unter schlechten Bedingungen mindestens die Hälfte von 6 profitablen Pips erhalten, was denken Sie?

 
D500_Rised:

Ich bezweifle die Möglichkeit einer zeitlich korrekten Reihenfolge von write_1---read_2, write_2---read_1.

Vielleicht können Sie Ihre eigene Methode vorschlagen, denn wir diskutieren nur einen Weg: durch die Datei, aber es gibt noch fortgeschrittenere: durch den Speicher, können Sie etwas darüber sagen?
Grund der Beschwerde: