Forex Trades & Talk

      Es ist sehr interessant, dass der Switch von Python auf eine C-ähnliche Sprache so gut klappt. Dann war an den vielen Python-Empfehlungen als besonders gut zum Erlernen der Programmierung doch was dran.

      Für richtig professionelle Arbeiten taugt Python mit seiner riesigen Zahl an leicht anwendbaren Bibliotheken, die teils in sehr effizientem C- Code geschrieben sind, wie z. B. numpy und scipy, übrigens auch.

      Norbert Gundeler schrieb:

      @ weberm
      Vielleicht könntest Du etwas zu Deiner Vorqualifikation in Sachen Programmierung sagen und mit welchen Aufwänden vielleicht Andere nach Deinen Erfahrungen rechnen sollten, bis sie die MetaTrader-Programmierung hinreichend nutzbringend beherrschen, damit hier Einige die Scheu davor verlieren.


      Gerne. Ich hatte zwar zu C64 Zeiten ein paar kleine Basic Progrämmchen geschrieben und ich kann mich noch dunkel an Informatik zu Schulzeiten als Nebenfach mit Turbo Pascal erinnern, aber außer if-then und while-Loops sind da nicht viele Dinge hängengeblieben. Ich habe dann vor einiger Zeit diverse Python-Einsteiger-MOOCs besucht, mit vielleicht 80h Aufwand oder so. Danach klappte es auf Anhieb sich in MQL mittels Tutorials und Handbuch einzuarbeiten und meine (einfacheren) Ideen in Code umzusetzen. Der Rest ergibt sich dann von alleine, man wächst mit der Aufgabe sozusagen...
      Ich würde aber nicht behaupten MQL zu beherrschen, da ich nur selektiv die Dinge programmiert habe, die ich haben wollte.

      MetaTrader mit Interprozess-Kommunikation zu einem Applikations-Verbund erweitern

      @ weberm

      Da ich die Template-Engine (großes Wort für ein paar String-Ersetzungen) im Moment nur für einmalige Reporte nutze, reicht mir die Erzeugung eines statischen Files.

      Ansonsten stehen u. a. folgende Inter-Prozess-Kommunikations-Mechanismen bereit, die auch nur wenige Zeilen mehr oder weniger standardisierten und abschreibbaren Codes erfordern:
      • ganz gewöhnliche Windows-DLLs, die beliebigen Code mit beliebigen Kommunikations-Mechanismen enthalten können,
      • statische Files, die vom MetaTrader geschrieben und vom Browser lokal, als HTML, ggf. auch mit Extra-Daten-Einzug über JSON, XML oder TXT-Format, oder vom einem dort nachsehenden Web-Server beliebiger Wahl gelesen werden können,
      • Named Pipe (wie in Communicating with MetaTrader using Named Pipes without ing DLLs beschrieben), was insbesondere beim Weiter-Vertrieb von EA zur Beruhigung der Nerven mißtrauischer Anwender dienen soll, im Betrieb auf dem Rechner des Entwicklers selber aber nur einer unter gleichberechtigten Mechanismen ist,
      • oder sehr einfach und mit Web-Dynamik zugleich mit WebRequest.
      Alle Varianten, die Web-Technologien nutzen, haben den Vorteil, sehr einfach von Dritten abrufbar zu sein, Teile der Anzeige-Logik mit den im Web gängigen Techniken zu nutzen, die für versierte Web-Programmierer einfacher als innerhalb des MetaTraders zu programmieren sind und in Teilen bzgl. der optischen Möglichkeiten ohne langes Rum-Programmieren aus dem Stand mächtiger sind.

      Bei Nutzung von WebRequest können (fachgerechterweise nach RFC 2616 Sektion 9 [wegen Aufruf einer Änderungs-Operation] mit POST- statt prinzipiell auch möglichen GET-Requests) beliebige Daten (mit POST auch große Mengen) aus dem MT heraus gereicht werden. Auf Seite des Web-Servers kann dann der vom jeweiligen Programmierer favorisierte Speicher-Mechanismus (SQL-Datenbank, reiner Text, XML, XML mit ODBC, CSV, serialisierte Intern-Daten der Server-Programmier-Sprache, privates Binär-Format u. a.) zum dortigen Weiter-Vorhalten der Daten genutzt werden.

      Soll der MetaTrader nicht mit jedem Tick oder bei jedem Timer-Event aktiv Ausgaben auf den zusätzlichen Kanälen machen, so kann man ihn über die obigen Inter-Prozess-Kommunikations-Mechnismen (außer WebRequest) auch von außen bei Bedarf triggern, wenn ein Skript oder EA läuft, der den Trigger erkennen kann (bei statischen File z. B. mit der Prüfung auf Vorhandensein eines Files, ggf. dem Lesen von [selbst erdachten] Kommandos daraus).

      Eine TemplateEngine ist kein großer BudenZauber, mit StringLen und StringReplace bekommt man das schon hin. Wenn man stattdessen innerhalb der Web-Technologie arbeitet, egal ob auf Seite des Web-Servers oder des Browsers, kann man auch die sehr mächtigen regulären Ausdrücke dafür nutzen, die es im MetaTrader leider nicht von der Stange gibt. Dann muss man nur einfache Daten zur weiteren Aufarbeitung herausreichen.

      Ansonsten möchte ich noch sagen, dass mir das, was Du machst gut gefällt. Vielleicht könntest Du etwas zu Deiner Vorqualifikation in Sachen Programmierung sagen und mit welchen Aufwänden vielleicht Andere nach Deinen Erfahrungen rechnen sollten, bis sie die MetaTrader-Programmierung hinreichend nutzbringend beherrschen, damit hier Einige die Scheu davor verlieren.

      Ich selber bin als seit 1982 mit IT und Programmierung betrauter Experte mit Erfahrung in etwa 3 Dutzend Sprachen dafür kein Maßstab und unterschätze den Aufwand für totale Neulinge auf dem Feld wahrscheinlich, insbesondere wenn sie es sich im Selbst-Studium erarbeiten.
      @NB

      Ja, das ist ein blanker Chart (Farbeinstellungen komplett auf WhiteSmoke) und die Tabellen und Buttons habe ich dann mittels ObjectCreate() erstellt.


      Ich reiche für meine Übersichten die Parameter oft an eine in MQL geschriebene Template-Engine (mit {{...}}-Ausfüll-Parametern, etwa 300 Zeilen Code) hinein, die dann eine beliebige HTML-Seite oder auch Board-Code für Foren erzeugen kann.

      Das übersteigt etwas meine Fähigkeiten...aber eine Anzeige im Browser hat auch was. Wird das denn bei jedem Tick aktualisiert bzw. müsste man dann auch den Browser laufend aktualisieren?
      @ weberm

      Jetzt frage ich auch mal etwas. Was hast Du dort wie dargestellt?

      Befinden sich die weißen Flächen und die Buttons auf einem Chart oder gibt es einen Darstellungsbereich außerhalb von Charts, der mir bisher noch nicht aufgefallen ist? Erzeugst Du die Ausgabe mit Graphik-Funktionen IN der weißen Bitmap oder mit Text-Funktionen ÜBER dieser?

      Ich reiche für meine Übersichten die Parameter oft an eine in MQL geschriebene Template-Engine (mit {{...}}-Ausfüll-Parametern, etwa 300 Zeilen Code) hinein, die dann eine beliebige HTML-Seite oder auch Board-Code für Foren erzeugen kann.

      Norbert Gundeler schrieb:

      jedem ernsthaft Interessierten als Einstiegs-Programmier-Übung empfohlen werden kann, da er inhaltlich sehr transparent ist, technisch kaum mehr als das Minimum der zu programmierenden Dinge erfordert und für den Gewinn an Übersichtlichkeit am Markt einen guten Schritt voran bedeutet.


      Agree. Nur mit den Basics ausgestattet konnte ich eine auf meine Wünsche zugeschusterte Marktinfoseite im Metatrader programmieren. Der Screenshot zeigt nur den unteren Teil der Seite und gibt die schwächste und stärkste Währung eines gewünschten Zeitrahmens aus (die Zahl ist nur ein Maß mit welcher Volatilität die Währung auf- oder abwertet).
      Über die Buttons kann ich voreingestellte Zeitrahmen aufschalten oder über Optionen auch einen selbst festlegen.

      Bilder
      • Mover.jpg

        54,05 kB, 1.507×201, 800 mal angesehen

      Darstellen der Währungs-Relationen zu einem Währungs-Korb

      Für den USD gibt es den fertigen USD-Index (USDX), der bei den meisten CFD-Buden auch direkt getradet werden kann.

      Den USDX oder jede andere selbst gewählte Zusammenstellung kann man nehmen, um in einem Chart, den Kurs einer einzelnen Währung auf einen Währungskorb zu beziehen. Die Bewegung der Drittwährung zum Währungskorb wird dann durch xxx.USD * USDX bestimmt.

      Im Metatrader kann man in einen Custom-Indikator (gibt genügend Vorlagen für Custom-Indikatoren) die Formel einsetzten und direkt anzeigen lassen. Bei einem selbst gewählten Korb, rechnet man vorher statt des USDX eben den gewählten als einfaches, geometrisches oder selbst gewählt gewichtetes Mittel aus.

      Da in einem Fenster auch mehrere Linien angezeigt werden können, ist es auch kein Problem, alle gewünschten Währungen in einem einzigen Fenster in Relation anzuzeigen, ggf. auf einen Bezugswert 100 % beim Daily Open oder einem frei gewählten Zeitpunkt gesetzt. Da sieht man dann sofort, welche Kurve gegenüber den anderen ausbricht und welche Währung eine Sonderbewegung macht.

      Das wäre so ziemlich einer der simpelsten denkbaren Custom-Indikatoren, der jedem ernsthaft Interessierten als Einstiegs-Programmier-Übung empfohlen werden kann, da er inhaltlich sehr transparent ist, technisch kaum mehr als das Minimum der zu programmierenden Dinge erfordert und für den Gewinn an Übersichtlichkeit am Markt einen guten Schritt voran bedeutet.

      Mr. Moon schrieb:

      Aha, hast also wie Goso die Crosspairs im Auge. Muss gestehen, dafür habe ich kein Auge.Ist scheinbar etwas, das wieder jahrelanges chartreading erfordert.


      Man könnte sich auch was Übersichtliches programmieren, um angezeigt zu bekommen welche Währung aktuell oder in einem gewünschten Zeitrahmen gegen alle anderen auf- oder abwertet. Als ersten Fingerzeig sozusagen ohne zuerst zig Charts vergleichen zu müssen...