Diskussion zum Artikel "Entwicklung eines Replay System (Teil 32): Auftragssystem (I)"

 

Neuer Artikel Entwicklung eines Replay System (Teil 32): Auftragssystem (I) :

Von allen Dingen, die wir bisher entwickelt haben, ist dieses System, wie Sie wahrscheinlich bemerken und letztendlich zustimmen werden, das komplexeste. Nun müssen wir etwas sehr Einfaches tun: unser System soll den Betrieb eines Handelsservers simulieren. Die Notwendigkeit, die Funktionsweise des Handelsservers genau zu implementieren, scheint eine Selbstverständlichkeit zu sein. Zumindest in Worten. Aber wir müssen dies so tun, dass alles nahtlos und transparent für den Nutzer des Wiedergabe-/Simulationssystems ist.

Zu sagen, dass der EA derselbe sein m

uss, bedeutet, dass man ihn nicht für die Verwendung in einem Tester kompiliert und ihn dann für die Verwendung auf dem realen Markt erneut kompiliert. Dies wäre vom Standpunkt der Programmierung aus gesehen viel einfacher und leichter, würde aber Probleme für den Nutzer mit sich bringen, da der EA ständig neu kompiliert werden müsste. Um also eine optimale Nutzererfahrung zu gewährleisten, müssen wir einen EA erstellen, der nur eine Kompilierung erfordert. Sobald dies geschehen ist, kann es sowohl auf dem realen Markt als auch im Testgerät verwendet werden.

Der kritische Teil der Verwendung des EA auf dem realen Markt, selbst auf einem Demokonto, ist am einfachsten zu implementieren. Also fangen wir dort an. Bitte beachten Sie, dass wir mit einem sehr einfachen Modell beginnen werden. Wir werden die Komplexität des EA schrittweise erhöhen und seine Fähigkeiten verbessern, um schließlich einen EA zu schaffen, der sowohl für Replay/Simulation als auch für ein Demo- oder Live-Konto verwendet werden kann. Als Erstes werden wir uns den Großteil des Codes ausborgen, der bereits in anderen Artikeln hier in der Community erklärt wurde. Diese Artikel gehören mir, daher sehe ich kein Problem darin, diese Informationen zu verwenden. Wir werden einige Änderungen vornehmen, um das System flexibel, modular, zuverlässig und robust zu machen. Andernfalls könnten wir uns irgendwann in einer Sackgasse befinden, die eine Weiterentwicklung des Systems in jeder Hinsicht unmöglich macht.

Dies ist nur der Anfang, denn die Aufgabe ist sehr komplex. Zunächst einmal müssen wir wissen, wie das System der Klassenvererbung derzeit im EA implementiert ist. Wir haben dies bereits in anderen Artikeln dieser Reihe gesehen. Das aktuelle Vererbungsdiagramm ist in Abbildung 01 dargestellt:

Abbildung 01

Abbildung 01: Aktuelles EA-Klassenvererbungsdiagramm

Obwohl dieses Schema für das, was bisher gemacht wurde, sehr gut funktioniert, ist es noch weit von dem entfernt, was wir wirklich brauchen. Dies liegt nicht daran, dass es schwierig wäre, die Klasse C_Orders in dieses Vererbungsschema aufzunehmen. Dies kann erreicht werden, indem die Klasse C_Orders von der Klasse C_Study abgeleitet wird. Aber ich will das nicht tun. Der Grund liegt in einem sehr praktischen Problem, das von den meisten Programmierern, die mit OOP (Object Oriented Programming) arbeiten, manchmal ignoriert wird. Dieses Problem wird als Verkapselung bezeichnet. Das heißt, Sie sollten nur das wissen, was Sie für Ihre Arbeit brauchen. Wenn wir eine Hierarchie von Klassen erstellen, sollten wir nicht zulassen, dass einige Klassen mehr wissen, als sie wirklich wissen müssen. Wir sollten immer die Art der Programmierung bevorzugen, bei der jede Klasse nur das weiß, was sie wirklich wissen muss, um ihre Aufgabe zu erfüllen. Daher ist die Beibehaltung der Kapselung beim Hinzufügen der Klasse C_Orders zu dem in Abbildung 01 dargestellten Diagramm praktisch unmöglich. Daher besteht die beste Lösung für dieses Problem darin, die Klasse C_Terminal aus dem Vererbungsblock zu entfernen, wie in Abbildung 01 gezeigt, und sie als Argument oder Parameter in denselben Block zu übergeben, der auf eine viel geeignetere Weise verwendet werden kann. Die Kontrolle darüber, wer welche Informationen erhält, wird also durch den EA-Code ausgeübt, was zur Aufrechterhaltung der Informationskapselung beitragen wird.

Autor: Daniel Jose