Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Range Bars werden aus einzelnen Ticks zusammengebaut. Die Dauer eines Range Bars wäre also der Zeitstempel des letzten Ticks des aktuellen Balkens minus dem Zeitstempel des letzten Ticks des vorangegangenen Balkens.
Ausnahmen: Zu Beginn der Session kann man nicht den letzten Tick des vorangegangenen Balkens nehmen sondern nimmt stattdessen die Zeit des Handelsbeginns. Ein besonders Problem hat man, wenn die Handelszeit unterbrochen wird, ohne dass dies in der Session reflektiert wird. Dies tritt zum Beispiel bei den Index Futures, die an der CME gehandelt werden zwischen 23h30 und 24h00 auf. NinjaTrader würde hier mit einer Balkendauer von > 30 Minuten aufwarten, es sei denn, dass Du das Problem technisch erfasst. Zum 18. November verschiebt sich das Problem auf die Zeitspanne von 22h15 bis 22h30. Man müsste also prüfen, ob es sich beim Instrument um ein CME gehandeltes Index Future handelt und dann für diesen Fall, dass der Zeitstempel des vorangegangen Balkens vor 15:15 Central Time und der des atkuellen Balkens nach 15:30 Central Time liegt eine Sonderregelung prüfen.
Außerdem werden durch den Ansatz in der inaktiven Zeit besonders große Balken generiert, so dass man in der aktiven Zeit nichts mehr sieht. Ein Logarithmus wäre hier angebracht.
Das Problem vereinfacht sich, wenn man statt der Dauer eines Range Bars, die Geschwindigkeit Range/Zeit ermittelt. Hier müsste allerdings auf Division durch Null geprüft werden. NinjaTrader hat Zeitstempel nur in Sekundenauflösung, und es kommt häufig vor, dass die Dauer eines RangeBars Null ist. Es müsste also eine Mindestdauer von 1 Sekunde gefordert werden.
Ich habe mal an einem ähnlichen Konzept einmal gearbeitet. Das Kernstück des Codes ist:
1. Zeile: NinjaTrader setzt das Volumen immer mindestens auf 1, dahe die Korrektur.
2. Zeile: Prüft ob es um den ersten Balken einer Session handelt
4./5. Zeile: Mit dem ersten Tick des ersten Balkens einer Session wird der Beginn der Handelszeit ermittelt.
6.Zeile: Balkendauer für den Fall des Handelsbeginns
9.Zeile: Balkendauer in allen anderen Fällen
10:Zeile: Zur Balkendauer wird 1 Sekunde addiert, um Division durch Null auszuschließen, dann wird daraus die Wurzel gezogen und der Kehrwert gebildet.
Das Chart unter zeigt den Ansatz. Der massive Bereich in der Mitte zeigt die News Release um 14h30, da sich hier innerhalb von einer Minute das halbe Chart herausgebildet hat. Sind wohl einige HFT-Algos die sich an den diskretionären Tradern laben....
Also gibt es so einen Indikator noch nicht. Das wäre meine erste Überlegung. Dann wäre meine Überlegung könnte man so einen Indikator überhaupt verwenden, also hätte er einen Nutzen. Da ich diskretionärer Trader bin müsste ich das zuerst ausprobieren.
Ich würde um das ganze einfach zu halten mal den Session Beginn usw. vernachlässigen. Ich habe versucht das vorerst mal ganz simpel zu halten und habe einfach die Differenzzeit der letzten Bars genommen. Allerdings ist mein Problem das zu jeder vollen Stunde eine Differenz von 4000 Sekunden entsteht. Da hänge ich gerade. Vielleicht hast du ja eine Idee.
Du kannst im Prinzip den Code oben abschreiben. Dein rekursiver Ansatz funktioniert nicht. Die gesuchte Zeit ist die Differenz des Timestamps des aktuellen und des vorangegangenen Bars. Du brauchst ja nicht wie ich das Ergebnis zu invertieren.
Die ToTime() Methode ist ungeeignet, weil dann eine Minute 100 Sekunden hat. Die Zeit des ersten Balkens des Handelstages auf 0 zu setzen macht auch keinen Sinn. Die dritte Bedingung kann eine negative Zeit ergeben, was noch schlimmer ist.
Wenn Du schon fragst, musst Du jetzt mit meiner Antwort leben. So wie Du es machen willst geht es nicht ....
Die Variablen habe ich natürlich im Kopf des Programmes deklariert. barDuration ist eine Zeitspanne, der entsprechende Datentyp in C# wäre TimeSpan. Du deklarierst und initialisierst es zum Beispiel als
Das Thema ist nicht so einfach. Anfangen muss ich hier mit dem Better Volume Indikator von Barry Taylor von Emini Trading & How to Day Trade | Emini-Watch.com. Der Code für die ursprüngliche Version beruhte auf einer einfachen Analyse von Volumen und Spanne. Der Indikator identifiziert
-> Balken mit weiter Spanne und hohem Volumen -> Climax Bars (für Climax oder Breakout)
-> Balken mit enger Spanne und hohem Voluem -> Churn Bars (wo es die Händler zerreibt)
-> Balken die beide Kriterien erfüllen -> Climax Churn Bars
-> Balken mit sehr geringem Volumen -> Low Volume Bars
Dieses Konzept habe ich mit dem BetterVolume Indikator umgesetzt. Mittlerweile liegt eine überarbeitete Version des Indikators in Easy Language vor.
Dieser unterscheidet zwischen Bid und Ask Volumen. Da dieses weder bei TradeStation noch NinjaTrader vorhanden ist, wird die TickRule zur Näherung genommen (Genauigkeit liegt bei ca. 90%).
Das grundsätzliche Problem ist jedoch, dass der Better Volume Indikator nur auf Minutencharts funktioniert. Was ist denn ein Wide-Ranging Bar auf einem Range Chart. Gibt es nicht, da alle Balken gleich groß sind. Nun steht das Selektionskriterium ja auch nur für ein hohes Momentum. Auf einem Minutenchart wird dies über die Spanne des Balkens dargestellt, da der Divisor, nämlich die Zeit eines Balkens, immer dieselbe ist. Für ein Range Chart müsste man hingegen die (Einheits-)Spanne durch die Dauer des Balkens dividieren. Hier kommt jetzt der Code für die Bar Duration ins Spiel.
Der Ansatz Range/Balkendauer ist also nur eine Verallgemeinerung des Better Volume- Konzepts für andere Bartypen. Enstprechend ist das Volumen auf den Wert Volumen/Balkendauer zu korrigieren, bevor der Better-Volume Indikator auf Range Bars losgelassen werden kann.
Ich habe den Ansatz dann auch aus Zeitmangel nicht weiterverfolgt, habe aber noch ein ähnliches Projekt in der Entwicklung.
Eben habe ich noch mal geschaut wegen den Tradekosten. Diese sind ja global im NT7 ja einzustellen unter "Tools - Options - Commission - Currency/Futures/Stocks - Zenfire" (mein verwendeter Datafeed). Wenn ich jedoch eine Selektion in den Instrumenten vornehmen mag, gibts auch dort die Möglichkeit unter "Misc".
Was muss ich dabei beachten, wenn ich diese hier verwenden mag? Globale Deklaration herausnehmen oder wird diese, sofern eine spezifische Deklaration vorliegt, automatisch ignoriert?