NexusFi: Find Your Edge


Home Menu

 





Fragen zum Ninjatrader


Discussion in German Traders

Updated
      Top Posters
    1. looks_one Renkotrader with 168 posts (21 thanks)
    2. looks_two Fat Tails with 152 posts (168 thanks)
    3. looks_3 terratec with 39 posts (35 thanks)
    4. looks_4 pipandrun with 38 posts (2 thanks)
      Best Posters
    1. looks_one Fat Tails with 1.1 thanks per post
    2. looks_two terratec with 0.9 thanks per post
    3. looks_3 Daytrader999 with 0.9 thanks per post
    4. looks_4 Renkotrader with 0.1 thanks per post
    1. trending_up 130,899 views
    2. thumb_up 299 thanks given
    3. group 27 followers
    1. forum 575 posts
    2. attach_file 76 attachments




 
Search this Thread

Fragen zum Ninjatrader

  #131 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


Ironman9973 View Post
An @Fat Tails

Ich habe keine Ahnung ob es so etwas schon gibt (wahrscheinlich schon) oder ob es überhaupt einen praktischen Nutzen dafür gibt.

Ich handle meistens den Dax mit Rangebars. Jetzt habe ich mir überlegt einen Zeitindikator für Rangebars zu programmieren. Also einfach eine Linie die die Zeit, wie lange ein Rangebar braucht, darstellt. Um zu erkennen mit welcher Geschwindigkeit sich die Bars bilden.

Habe einen kleinen Entwurf des Indikators, so wie ich mir das ungefär vorstelle, angefügt. Würde mich über deine Meinung dazu freuen.

Danke.


PS: Indikator hat noch Bugs, wollte nur erst mal fragen ob es so etwas schon gibt, bevor ich mich damit weiter beschäftige.

Der Indikator wird so nicht funktionieren.

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:
 
Code
volume = Math.Max(0,Volume[0]-1);
if(Bars.FirstBarOfSession)
{
	if (FirstTickOfBar)	
		Bars.Session.GetNextBeginEnd(Time[0], out sessionStartTime, out sessionEndTime);
	barDuration = Time[0]-sessionStartTime;
}
else
	barDuration = Time[0] - Time[1]; 
speed = 1/Math.Sqrt(1+barDuration.Seconds);


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....


Reply With Quote
Thanked by:

Can you help answer these questions
from other members on NexusFi?
Better Renko Gaps
The Elite Circle
Exit Strategy
NinjaTrader
ZombieSqueeze
Platforms and Indicators
Pivot Indicator like the old SwingTemp by Big Mike
NinjaTrader
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Just another trading journal: PA, Wyckoff & Trends
33 thanks
Tao te Trade: way of the WLD
24 thanks
My NQ Trading Journal
14 thanks
HumbleTraders next chapter
11 thanks
GFIs1 1 DAX trade per day journal
11 thanks
  #132 (permalink)
 
Ironman9973's Avatar
 Ironman9973 
New York
 
Experience: Intermediate
Platform: NinjaTrader, TradeNavigator
Broker: Optimus Futures
Trading: Piano
Posts: 111 since Jul 2012
Thanks Given: 53
Thanks Received: 59

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.

Danke für deine ausführliche Antwort.

Lg. Thomas

Reply With Quote
  #133 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102



Ironman9973 View Post
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.

Danke für deine ausführliche Antwort.

Lg. Thomas

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.

Reply With Quote
Thanked by:
  #134 (permalink)
 
Ironman9973's Avatar
 Ironman9973 
New York
 
Experience: Intermediate
Platform: NinjaTrader, TradeNavigator
Broker: Optimus Futures
Trading: Piano
Posts: 111 since Jul 2012
Thanks Given: 53
Thanks Received: 59

Bleibt aber noch das Problem der vollen Stunde, welches ich so gelöst habe.


int zeit = ToTime(Time [0])- ToTime (Time [1]);
if (Bars.FirstBarOfSession)
zeit = 0;
if (zeit > 3000)
zeit = zeit - 4000;

RangeMeterLine.Set(zeit);

lg.

Reply With Quote
  #135 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


Ironman9973 View Post
Bleibt aber noch das Problem der vollen Stunde, welches ich so gelöst habe.


int zeit = ToTime(Time [0])- ToTime (Time [1]);
if (Bars.FirstBarOfSession)
zeit = 0;
if (zeit > 3000)
zeit = zeit - 4000;

RangeMeterLine.Set(zeit);

lg.

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 ....

Reply With Quote
  #136 (permalink)
 
Ironman9973's Avatar
 Ironman9973 
New York
 
Experience: Intermediate
Platform: NinjaTrader, TradeNavigator
Broker: Optimus Futures
Trading: Piano
Posts: 111 since Jul 2012
Thanks Given: 53
Thanks Received: 59

Was ich nicht verstehe ist welchen Typ von Variabel kann ich den Time zuweisen? Du hast:

barDuration = Time [0] - Time[1]

was ist barDuration für ein Typ?

Danke.

Reply With Quote
  #137 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


Ironman9973 View Post
Was ich nicht verstehe ist welchen Typ von Variabel kann ich den Time zuweisen? Du hast:

barDuration = Time [0] - Time[1]

was ist barDuration für ein Typ?

Danke.


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

 
Code
private TimeSpan barDuration = new TimeSpan(0,0,0);

Dann kannst Du es verwenden.

Reply With Quote
Thanked by:
  #138 (permalink)
 
Ironman9973's Avatar
 Ironman9973 
New York
 
Experience: Intermediate
Platform: NinjaTrader, TradeNavigator
Broker: Optimus Futures
Trading: Piano
Posts: 111 since Jul 2012
Thanks Given: 53
Thanks Received: 59

Danke für deine Hilfe noch einmal. Aber eine letzte Frage noch. Bringt mir der Indikator eigentlich etwas?

Ich weiss ist eigentlich eine doofe Frage, aber du hast ja dieses Konzept schon einmal im durchdacht, warum hast du es wieder verworfen?

Reply With Quote
  #139 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


Ironman9973 View Post
Danke für deine Hilfe noch einmal. Aber eine letzte Frage noch. Bringt mir der Indikator eigentlich etwas?

Ich weiss ist eigentlich eine doofe Frage, aber du hast ja dieses Konzept schon einmal im durchdacht, warum hast du es wieder verworfen?

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.

The Better Volume Indicator – My Secret to Analyzing Volume

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.

Reply With Quote
Thanked by:
  #140 (permalink)
 
Renkotrader's Avatar
 Renkotrader 
Frankfurt, Hessen, Germany
 
Experience: Advanced
Platform: NinjaTrader 8
Broker: APEX & NinjaTrader Brokerage
Trading: 6E, 6J, CL, ES, FDAX, FGBL, GC, HG, NQ, RTY, SI, YM
Posts: 547 since May 2012
Thanks Given: 1,419
Thanks Received: 227


Hallo Traders!

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?

Danke!

Viele Grüße,
Renkotrader

Started this thread Reply With Quote




Last Updated on September 22, 2017


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts