Knochen Posted January 7, 2010 Report Posted January 7, 2010 Hallo, kann mir jemand sagen, wie man beim automatischen Trading mit Ninjatrader herausbekommt, zu welchem tatsächlichen Ausführungskurs eine Order durchgegangen ist? Vielen Dank im Voraus!
Henrik Posted January 7, 2010 Report Posted January 7, 2010 Unter dem Reiter "Executions" in NT, und wenn du dem nicht traust dann hilft nur ein Vergleich mit der Positionshistory des Brokers (bist du bei IB? Da am nächsten Tag unter Statements, ansonsten bei aktiver Position siehst du das unter ... frag mich jetzt nicht, Portfolio glaub ich, im TWS).
Knochen Posted January 7, 2010 Author Report Posted January 7, 2010 Mir geht es darum, wie ich dass programmtechnisch auslesen kann, wenn ich eine Strategie für den NinjaTrader programmiere und einen Trades ausgeführt habe. Habe gehört, dass das nicht so einfach sein soll. Beim MT kann man sich ja einfach mit dem Befehl OrderOpenPrice() den tatsächlichen Ausführungskurs auslesen. Gibts da im Ninjatrader auch einen vergleichbaren Befehl?
Henrik Posted January 7, 2010 Report Posted January 7, 2010 Ach so, da hab ich dich komplett falsch verstanden Da kann ich dir nicht helfen, ich bin nicht der Codingspezi, bin nicht sicher ob das geht, da NT ja grundsätzlich alles strategieintern managed. Es gibt da ein sehr dickes "Handbuch", vielleicht findest du da etwas (oder ein anderer kann helfen), das Buch kennst du aber sicher (20 MB): http://www.ninjatrader-support.com/HelpGui...n6HelpGuide.pdf
whipsaw Posted January 7, 2010 Report Posted January 7, 2010 Ich kann leider auch nicht viel Konstruktives beitragen.Möglich, dass Du im NinjaTrader Help Guide etwas Verwertbares findest. #Edit:(Glaube das ist die Online Version von Henriks PDF)
Henrik Posted January 7, 2010 Report Posted January 7, 2010 #Edit:(Glaube das ist die Online Version von Henriks PDF) Ja ist es, und in NT selber findet man das auch in 100000 kleinen Häppchen.Aber in dem Handbuch steht alles recht übersichtlich, und die Suche geht schneller, deswegen nehme ich das immer (habs auf Platte gespeichert).
Knochen Posted January 7, 2010 Author Report Posted January 7, 2010 Ich danke euch, so wie's aussieht müßte es mit OnExecution() oder OnOrderUpdate() möglich sein.
DarthTrader Posted January 8, 2010 Report Posted January 8, 2010 @Knochen: In der OnExecution-Methode musst Du abfragen, ob die Order bereits gefillt wurde.Dann kannst Du den Preis auslesen. NT arbeitet hier nach einem Event-Mechanismus,was die Programmierung vereinfacht, aber natürlich die Einstiegshürde höher setzt. Hier mal ein Code-Beispiel: /// <summary> /// Wird nach jedem (Partial)-Fill einer Order aufegrufen. /// Erst hier habe ich den AvgPrice der Order und kann daraufhin /// die Stop und Target setzen. Wird nach OnOrderUpdate() aufgerufen. /// <summary> protected override void OnExecution(IExecution execution) { if (entryOrder != null && entryOrder.Token == execution.Order.Token) { if (execution.Order.OrderState == OrderState.Filled || execution.Order.OrderState == OrderState.PartFilled || (execution.Order.OrderState == OrderState.Cancelled && execution.Order.Filled > 0)) { double entryPrice = entryOrder.AvgFillPrice; ... if (Position.MarketPosition == MarketPosition.Long) { .. } else if (Position.MarketPosition == MarketPosition.Short) { ... } } } } Erklärungen findest Du im Help-Guide, oder im Forum von NT unter den Samples,die sind sehr zu empfehlen. Beste GrüßeDarth
Knochen Posted January 8, 2010 Author Report Posted January 8, 2010 Vielen Dank für das Beispiel, das sollte mir reichen. Mit der eigentlichen Programmierung sollte ich keine Probleme haben und die Hilfe sieht ja auch recht gut aus. Ich wollte nur eine Bestätigung bzw. einen Hinweis ob es auf einfache Art und Weise möglich ist den Preis auszulesen, weil mir gesagt wurde, dass das wohl gar nicht ginge mit der Scriptsprache von NT und man es ganz umständlich programmieren müßte, was ich mir allerdings nicht recht vorstellen konnte.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now