Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 08.12.11
Programmierer Programmierer ist offline
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

Diesen Wunsch scheinen ja schon mehr Leute gehabt zu haben, lasst uns so einen EA doch hier entwickeln!

Ich mach schon mal den Anfang, andere Programmierer sind herzlich willkommen, mitzumachen. Machen wir doch offenes Entwickeln, d.h. mit Erklärung, wie was programmiert wird, zumindest für den Anfang. Es ist das ja für alle interessant, wie man so einen EA entwickelt.

Zuerst müssen wir da konzeptionell rangehen:

Was brauchen wir:
Einen EA, der bestimmte offene Orders beobachten und, wenn diese durch SL oder TP geschlossen wurden, als Pending Order neu einstellen soll.

Welche Orders soll der EA beobachten?
Zum eine würde ich dem EA die Möglichkeit einbauen, das Währungspaar und/oder die Magicnnummer zu spezifizieren. Das macht also zwei Inputs notwendig (MagicNumber und Symbol). Damit kann man nämlich den EA so einstellen, dass nur einzelne Orders beobachtet und ggf. neu eröffnet werden, und andere Orders von ihm in Ruhe gelassen werden. Will man hingegen alle Orders von ihm prüfen lassen, lässt man beide Inputs einfach leer.

Wie soll der EA mitbekommen, wenn eine Order geschlossen wurde?
Leider bringt da MT4 keine richtig schöne Lösung von Hause aus mit, wie etwa Events. MT5 ist da besser. Für MT4 muss sich also eine selber programmieren, mir fallen da zwei Möglichkeiten ein:
  • Entweder man bildet sich eine Liste von zur Zeit offenen Orders und überprüft jeden Tick, ob aus dieser Liste Orders geschlossen worden sind.
  • Oder man beobachtet die OrderHistory und schaut, ob da eine neue Order hinzugefügt wurde, die vorher nicht da war.
Beide Lösungen haben natürlich Vor- und Nachteile. Ich bin eher für die erste Variante, da müssen wir nämlich nur einen Array mit offenen Orders vorhalten und müssen nicht die komplette History auf Veränderungen überprüfen.

Wie bekommen wir raus, ob die Order wirklich durch T/P bzw. S/L geschlossen wurde und nicht von Hand?
Orders, die von Hand oder durch einen EA geschlossen wurden, sollen ja nicht wieder eröffnet werden, oder?

Wenn ich an manchen Stellen zu weit um die Ecke denke und ihr bessere Lösungen habt, sagt bitte bescheid!