Sonntag, 7. Februar 2010

UserDefinedMethods.cs - Variablen

Da wir gerade beim Thema sind, möchte ich Euch gerne die Klasse UserDefinedMethods.cs etwas näher bringen.

Diese NT-Standardklasse ist Oberklasse von allen Strategien, die der User schreiben oder verwenden kann. Ausgdrückt wird die Vererbung im Code einer eigenen Klasse durch folgendes Konstrukt:






Der User kann in dieser Klasse globale Methode für alle Unterklassen und damit auch Strategien implementieren. Doch vorsicht, wie aus dem letzten Post ersichtlich besteht hier aufgrund von C# -spezifischen (bspw. Vererbungsregeln), aber auch von allgemeinen objekt-orientierten Prinzipien eine erhöhte Fehlergefahr bei der Programmierung. Im letzten Post hatte ich erwähnt, dass Trades nicht abgesetzt wurden. Dies war zum Glück ein Fehler, der keine großen Konsequenzen hatte, aber sicherlich sollte man hier aufpassen was man macht.


Welche Methoden oder Prüfungen gehören meiner Ansicht nach nun in diese Oberklasse und wo ist es sinnvoll Variablen oder Methoden vielleicht eher in Unterklassen zu verwalten? Da ich kein C# -Experte bin, mich allerdings mit objekt-orientierten-Methodiken auskenne, möchte ich vorab schonmal darauf hinweisen, dass ich mich nicht immer an das Prinzip der Datenkapselung gehalten habe. Wichtiger ist mir persönlich an dieser Stelle, dass der Code stabil läuft sowie einfach und schnell zu ändern ist. Programmiertechnisch gesehen oder gar aus Sicht architektureller Aspekte gibt es sicherlich elegantere Methoden, aber das soll hier nicht weiter relevant sein.

Ok, zurück zu den Prüfungen die ich in der Klasse UserDefinesMethod.cs hinterlegt habe. Gerne bin ich für weitere Anregungen oder Ideen offen.

Einschränken der Tradingzeiten:








Je nach Geschmack kann man die zusätzlich notwendigen Parameter-Deklaration in der Oberklasse einbauen oder in der Strategie selbst. Ich habe mich für letzteres entschieden, um nicht immer die Möglichkeit zu haben, die Tradingzeiten einzuschränken, da es manchmal einfach nur störend ist, den Parameter-Bereich zuzumüllen.


Globale Entry und Exit-Order-Objekte:





Beinahe jede Strategie besitzt bei mir Entry-, Stop- und Target-Orders. Deswegen habe ich mich dazu entschlossen, diese in eine Oberklasse mit aufzunehmen.

An den Sichtbarkeitseinschränkungen der Variablen (hier: protected) erkennt man, dass die Variablen mit vererbt werden, also pro Unterklasse vorhanden sind und dort auch überschrieben werden können.

Instanzvariablen, um den Connection-Status zum Orderserver und Preisserver zu speichern:




So, dass soll es erstmal gewesen sein. Die zentralen Methoden des Klasse UserDefinedMethods.cs werden im zweiten Teil besprochen.

Beste Grüße
DarthTrader

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.