# Daten über port abfangen mit proxy server



## thomsen999 (11. Feb 2014)

Hey Leute, 
Ich hätte da mal eine allgemeine Frage,

Ich habe auf meinem Macbook ein Programm laufen, dass sich MetaTrader nennt(online-Broker)
Nun wollte ich bestimmte Daten, die auf diesem GUI dargestellt werden, ablesen + abspeichern.

Meine Idee dazu:

Ein Proxy in Java, dass zwischen MetaTrader und dem Internet sitzt, so dass alle Daten durch dieses Proxy laufen und ich mir hier bestimmte Datensätze raussuchen kann(ablesen+abspeichern).

Ein simples proxy wäre: http://www.java-forum.org/newthread.php?do=newthread&f=10

Würdet ihr das auch so machen?
Ist das auf diese Art und Weise überhaupt möglich?
Kennt ihr noch andere Lösungswese dafür?

LG !


----------



## ArChOn (11. Feb 2014)

Ich verstehe die Frage nicht.


----------



## thomsen999 (11. Feb 2014)

Ok anders:

Du hast ein GUI vor dir.
Auf diesem GUI hast du verschiedene Bereiche, die du gerne ablesen würdest(z.B. Zahlen,Wörter etc..).
Nun ist meine Frage, wie ich das am besten anstellen sollte, weiß da jmd was?


----------



## ArChOn (11. Feb 2014)

Na ist das ein eigenständiges Programm was du da nutzt oder eine Webanwendung? Letzteres könntest du parsen.


----------



## thomsen999 (11. Feb 2014)

Hierbei handelt es sich um einen online-Broker(Metatrader5) => Es hat also permanent Datenaustausch über das Internet.

Was würdest du meinen?


----------



## ArChOn (11. Feb 2014)

Wenn ich das richtig sehe, ist das ein eigenständiges Programm. Du willst quasi den Datenverkehr sniffen und Daten abfangen. Vermutlich wird das nicht gehen, da die Entwickler den Datenverkehr mit aller Wahrscheinlichkeit verschlüsselt haben. Schreib am besten mal direkt eine Mail an die Entwickler und frag ob die Software eine Schnittstelle hat, durch die man auf Daten zugreifen kann. Denke aber auch nicht, dass die das haben bzw. freigeben würden.


----------



## thomsen999 (11. Feb 2014)

Zu meiner Frage(urspünglich):

Meinst du es gibt die Möglichkeit, die Daten auf einem GUI(eigenständiges Programm) zu erfassen? LG


----------



## ArChOn (11. Feb 2014)

Nein... Wenn du jedoch eine Möglichkeit findest, wie man mit einem selbst implementierten Progamm die GUI einer fremden Software parsen kann, dann würden sich sicherlich viele freuen. Das geht ja schon in den OCR-Bereich rein.


----------



## thomsen999 (11. Feb 2014)

Sprich:
Ich muss darauf hoffen, dass es eine Schnittstelle gibt, auf man zugreifen könnte?
lg


----------



## ArChOn (11. Feb 2014)

Genau...

Habe gerade mal rum geschaut, gibt einige OCR-Bibliotheken mit denen du arbeiten könntest. Dein Programm könnte folgendermaßen ablaufen:


automatischen Screenshot von der Broker-Software machen
Bild mit OCR-Methoden untersuchen
Die Daten die du möchtest herausziehen und auswerten

Aber das wird schon ganz schön haarig werden. Halte uns bitte über den Stand deines Programms auf dem laufenden . Viele Grüße!


----------



## thomsen999 (11. Feb 2014)

habe ein ziemlich gutes OCR gefunden:
OCRKit - FAQ
Nur:
Dieses OCR ist halt nicht über java-quellcode bedienbar, sondern halt "drag and drop",
kennst du oder sonst jmd vielleicht eins, dass ich über java-code steuern kann? lg


----------



## MF (11. Feb 2014)

Hallo,

was hast Du denn genau vor ?

Du hast einen (eventuell kostenpflichtigen schnellen) FX-Datenprovider - also Währungkursdatenprovider - und willst mit den Daten irgendetwas anderes auslösen (z.B. ein anderes Programm triggern) ?

Ich nehme nicht an, daß Du mit den Daten direkt Berechnungen machen willst und anhand dieser Berechnungen eine Entscheidung innerhalb vom Metatrader treffen willst. Falls doch: Metatrader hat doch eine eigene Sprache "Metaquote Language" und eine eigenen Editor dazu: "Metequote Language Editor". Damit kann man sehr viel machen.

Ich habe mich nicht mit der Metatrader-Sprache beschäftigt, daher weiß ich nicht, ob man darüber die Daten in Realtime "exportien" (z.B. über einen zu progrmmierenden Port) kann. Das wäre aber eventuell eine Möglichkeit.

Grundsätzlich dockt sich Metatrader an einenm extenen Datenfeed an. Je nach Datenprovider kann man die Daten auch direkt mit einem eigenen Programm weiterverarbeiten (manche Provider stellen dafür APIs zur Verfügung). Wenn es nicht zeitkritisch ist (es Dir also nicht auf 100ms oder auch mehr ankommt)  stellt  - soweit ich weiß  - Yahoo FX in Realtime gratis zur Verfügung. Du musst nichtmal unbedingt das aus einer WebSeite auslesen - man kann die Seiten auch direkt abfragen (dazu gibt´s eine Seite im Netz die das erklärt - falls es sie noch gibt).

Wenn Du einen sehr schnellen kostenpflichtigen Datenzugang hast: Der Datenfeed ist doch unabhänging von der Tradingsoftware (Metatrader).  Falls man Deinen Datenprovider auch in NinjaTrader einlesen kann (bin nicht mehr so tief im Thema drin - aber ich meine die meisten Datenprovider werden von den bekannten Platformen gelesen). Da geht es definitv. Ich habe eine Lösung für Ninja Trader, die die Daten aus Ninja Trader einem externen Java Programm zuführt. Ich hatte dort testweise eine andere Visalisierung der Level II Daten implementiert. (Es geht also nicht nur für Ask-Bid sondern auch für Level II Daten - sofern der Datenprovider bzw. das Handelsinstrument es beinhaltet). Erstaunlicherwesie war die Darstellung im Java Program sogar minimal schneller als die der Ninja Trader GUI. Ninja Trader arbeietet mit "Ninja" Skript - letzendlich sind das eigentlich Plugins in C# für Ninja Trader. Falls Du an dieser Lösung intersessiert bist kannnst Du mich gerne kontaktieren.

Und .. ja, die GUI auslesen ist auch eine Möglichkeit - aber viel zu aufwendig und zu langsam - bist Du Daten hast (selbst wenn Du eine kostenpflichtigen superschnellen Provider hast) kannst Du Sie von einem anderem Feed umsonst direkt und in der gleichen Zeit lesen. Und noch eine Anekdote: IB Trader hatte vor einiger Zeit "One Click" Trading deaktiviert. Nach dem Auslösen des Traders musste immer ein zweites Fenster, das sich dannach öffnete wieder geklickt werden. Ein Kunde von mir wollte - musste -  dennoch weiter "one Click Trading machen.Es ließ sich lösen mit der Java Robot-Klasse. Die Umgebung der Maus wurde permanent gescannt (ob sich das zweite Fenster öffnet) und dann automatisch ausgelöst. Es lief quasi permanent ein Java Programm parallel. Hat funktioniert - nach ca. 80 - 100 ms war der Trade tatsäschlich automatisch aktiviert. Nicht gerade elegant - manchmal geht es jedoch nicht anders. Aber ich denke in Deinem Fall ist ein Auslesen der GUI das Pferd von hinten herum aufgezäumt.

Viele Grüße
MF


----------



## thomsen999 (12. Feb 2014)

Alles klar, ja dein Weg ist echt sinnvoller als meiner, habe dich per PN kontaktiert. 
LG


----------

