Jump to content
Tom Next - Daytrading Community

Recommended Posts

Posted (edited)

Ich bräuchte mal Eure Hilfe... daher meine Frage in die "Runde"!

 

Ist es möglich folgendes Script für NinjaTrader zu programmieren und wenn JA, gibt es jemand der sich dazu "berufen" fühlt? Ich bekomme es nämlich nicht auf die Reihe - was allerdings nicht verwunderlich ist. :cold:

 

Basiswerte: EuroFX (6E) und S&P mini (ES)

Variablen: [Kursstand: 6E] + [Kursstand: ES]

 

Input:

 

[(Kursstand: 6E x 1.000) x (Ticksize: 6E)] abzüglich [(Kursstand: ES) x (Ticksize: ES)] ==> Spread (absolut) in US$

 

Output: (Kursstand angenommen: 6E = 1,3000 und ES = 1000,00)

 

[(1,3000 x 1000) x (12,50$)] = 16.250,00$ abzüglich [(1000,00) x (12,50$)] = 12.500,00$ ==> 3.750,00$

 

 

Die kleinste mögliche Veränderung im Indikator "Spread (absolut)" sollte also 12,50$ betragen. Und mir ist klar, dass er unter bestimmten Voraussetzungen auch einen negativen absoluten Wert erreichen kann.

 

Ein einfacher Indikator mit Linien-Darstellung wäre ausreichend... eine Candlestick-Variante wäre allerdings genial - wird aber vermutlich mit NinjaTrader unmöglich sein?

 

Herzlichen Dank im Voraus... werde mich versuchen bei nächster Gelegenheit zu revanchieren!

Edited by TraderFox
Posted
eine Candlestick-Variante wäre allerdings genial - wird aber vermutlich mit NinjaTrader unmöglich sein?

 

Candlesticks sind möglich:

 

A1.png

 

Bin allerdings kein Progger, soll nur als Beispiel sein.

Posted (edited)

Danke Ronner!

 

Input:

 

[(Kursstand: 6E x 1.000) x (Ticksize: 6E)] abzüglich [(Kursstand: ES) x (Ticksize: ES)] ==> Spread (absolut) in US$

 

Output: (Kursstand angenommen: 6E = 1,3000 und ES = 1000,00)

 

[(1,3000 x 1.000) x (12,50$)] = 16.250,00$ abzüglich [(1000,00) x (12,50$)] = 12.500,00$ ==> 3.750,00$

 

 

Die kleinste mögliche Veränderung im Indikator "Spread (absolut)" sollte also 12,50$ betragen.

 

 

Falls NinjaTrader mit der Ticksize des ES nicht klarkommt - da hier ja 1 Punk 4 Ticks entsprechen - müsste die Formel wie folgt umgestellt werden:

 

Input:

 

[(Kursstand: 6E x 100) x (Pipwert: 6E)] abzüglich [(Kursstand: ES) x (Punktwert: ES)] ==> Spread (absolut) in US$

 

Output: (Kursstand angenommen: 6E = 1,3000 und ES = 1000,00)

 

[(1,3000 x 100) x (12,50$)] = 1.625,00$ abzüglich [(1000,00) x (50,00$)] = 50.000,00$ ==> -48.375,00$

 

 

Wie das Ergebnis mit Linien-Darstellung (grün) z.B. im 1min-Chart des YM / NQ aussieht, soll der nachfolgende Chart zeigen:

 

Handelschart YM_NQ-gross 17.09.08.png

 

Leider fehlen hier bei der Linien-Darstellung natürlich die "Spitzen" im Spread... daher wäre eine Candle-Darstellung nicht schlecht.

Edited by TraderFox
Posted

willst Du den Indi z.B. also für´s zeitigere Erkennen von Trendbrüchen nutzen ?

 

Sieht auf jeden Fall nicht schlecht aus (was für eine Plattform ist das eigentlich ?)

Posted

willst Du den Indi z.B. also für´s zeitigere Erkennen von Trendbrüchen nutzen ?

Das zum Einen und zum Anderen benötige ich die "Spitzen" im Chart, damit ich eine Orientierung bezgl. der Verlust-Stops habe, da man diese - wenn man den Spread handelt - ja gerade nicht wie gewohnt am Chart der Basisinstrumente festmachen kann.

 

 

Sieht auf jeden Fall nicht schlecht aus (was für eine Plattform ist das eigentlich ?)

Es handelt sich um VisualChart und da ist der Indi auch nicht in VBA programmiert, sondern lediglich mit der "Visuellen Plattform"... das macht das Ding recht langsam.

Posted

Wenn man einen Spread aus 2 Instrumenten als Candle-Chart berechnet, sollte man bedenken, dass das maximal eine Näherung sein kann, sofern die Berechnung auf Candles, Bars oder sonstigen Intervall-Daten beruht.

 

Wenn du z.B. einen Candle-Chart vom ES und 6E hasst, kannst du nicht einfach die 2 Highs multiplizieren, da das High im ES und das High im 6E aller Wahrscheinlichkeit nicht zur selben Zeit entstanden sind. Um solche Spreads korrekt darzustellen muss man ein Tick-Replay drüber laufen lassen.

Posted (edited)

Wenn man einen Spread aus 2 Instrumenten als Candle-Chart berechnet, sollte man bedenken, dass das maximal eine Näherung sein kann, sofern die Berechnung auf Candles, Bars oder sonstigen Intervall-Daten beruht.

 

Wenn du z.B. einen Candle-Chart vom ES und 6E hasst, kannst du nicht einfach die 2 Highs multiplizieren, da das High im ES und das High im 6E aller Wahrscheinlichkeit nicht zur selben Zeit entstanden sind. Um solche Spreads korrekt darzustellen muss man ein Tick-Replay drüber laufen lassen.

 

Die beiden Einzelcharts (6E + ES) bilden fast nie ihre Hochs/Tiefs genau zur selben Zeit aus. Dies ist aber auch nicht schlimm, denn wenn man ausschließlich nach dem Spread-Chart handelt, eröffnet man eine Position zu einem bestimmten absoluten Spread-Wert und dies ist dann der fixe Entry des geplanten Trades. Jede kapitalmäßige Veränderung nach diesem Entry - positiv wie negativ - ergibt dann den Gewinn bzw. Verlust. Und wenn der Indikator richtig programmiert wurde, dann ergibt sich auf Basis von jeweils einem Kontrakt in beiden Handelsinstrumenten, ein Gewinn/Verlust von 12,50$ pro Tick/Veränderung.

 

Gehandelt wird hierbei lediglich der fundamentale Hintergrund, dass ein "steigender USD schlecht für den US-Aktienmarkt" ist und vice versa. Man geht bei diesen beiden Futures also grundsätzlich von einer Korrelation aus. Da diese aber auch intraday vorübergehend aufgegeben werden kann (z.B. bei US-Wirtschaftsdaten), benötigt man dringend einen Spread-Chart, der einem dies umgehend aufzeigt! Dabei handelt man immer die relative Stärke/Schwäche des 6E gegenüber dem ES.

 

Sprich: Wenn der Spread-Chart fällt, dann bedeutet dies relative Schwäche des 6E gegenüber dem ES und man geht im 6E short sowie im ES long. Wenn der Spread-Chart steigt, dann impliziert das relative Stärke des 6E gegenüber dem ES und es geht im 6E long sowie im ES short...

Edited by TraderFox
Posted

Ja, das verstehe ich schon. Ich wollte nur anmerken, dass die Highs und lows auf einem historischen Chart nicht stimmen werden, es sei denn, der Chart wurde mit realtime-Daten erstellt oder durch ein Tick-Replay.

 

Der Effekt ist noch viel ausgeprägter mit Spread-Strategien mit 3 und mehr Instrumenten, da kann man solche Charts gleich ganz tonnen.

Posted

Gehandelt wird hierbei lediglich der fundamentale Hintergrund, dass ein "steigender USD schlecht für den US-Aktienmarkt" ist und vice versa. Man geht bei diesen beiden Futures also grundsätzlich von einer Korrelation aus.

 

 

 

laufen Sie wirklich gleich?

 

 

die Spitzen liegen weit auseinander,

 

(was zumindest für Teilstrecken für ein gegensätzlichen lauf spricht)

 

die Schwankungen sind auch sehr Unterschiedlich.

 

(was immer eine Anpassung der Positionsgröße zueinander bringen würde)

post-1129-012115600 1279773562_thumb.gif

post-1129-008358800 1279773570_thumb.gif

Posted

laufen Sie wirklich gleich?

Morje,

hmm, kenne mich mit Korrelationen nicht wirklich gut aus,

aber die Charts von TraderFox sind im Minutenbereich, deine abgebildeten im Tages - Wochenbereich.

 

Vielleicht geht es bei diesem Ansatz ja eher um die kurfristigen Zeitrahmen ?

Posted

Morje,

hmm, kenne mich mit Korrelationen nicht wirklich gut aus,

aber die Charts von TraderFox sind im Minutenbereich, deine abgebildeten im Tages - Wochenbereich.

 

Vielleicht geht es bei diesem Ansatz ja eher um die kurfristigen Zeitrahmen ?

 

Ja - es geht mir ausschließlich um die Darstellung des Intraday-Spread!

  • 2 weeks later...
Posted (edited)

Kenne mich mit NT7 nicht aus:

 

aber

 

               
	            private string x6E = @"6E"; //what ever is the name
	            private string xES = @"ES";

 

                           Add(x6E, NinjaTrader.Data.PeriodType.Minute, period); //[0][0]
		    Add(xES, NinjaTrader.Data.PeriodType.Minute, period); //[1][0]    

 

                           if(Close[0][0] > 0 && Close[1][0] > 0)
                           //make me rich 
                           //Close[0][0] - EurUsd
                           //Close[1][0] - SP500
                           double spread = Close[0][0] * TickSize - Close[1][0] * TickSize;

 

Nehme mal lieber den Dax. Und wenn für dich interessant, danke Element of Crime.

Edited by wh
  • 2 weeks later...
Posted

Da arbeite ich schon eine ganze Weile dran und nutze es auf MT4 - für NT habe ich zwar schon eine Idee, bin aber weit von der Umsetzung entfernt. Ohne Zusatzinstallationen ist es nicht umsetzbar.

 

@Aurelius

 

Ich weis - es ist frech nachzufragen, so kurz nach Deinem Urlaub... aber:

 

Wäre der Indikator in MT4 ohne großen Aufwand für Dich realisierbar, bzw. hast Du etwas Ähnliches schon programmiert?

Posted

@Aurelius

 

Ich weis - es ist frech nachzufragen, so kurz nach Deinem Urlaub... aber:

 

Wäre der Indikator in MT4 ohne großen Aufwand für Dich realisierbar, bzw. hast Du etwas Ähnliches schon programmiert?

 

Ich muss mich erst mal ein wenig sortieren, dann schau' ich mal wie ich das zeitlich hinbekomme. Ich melde mich dann über diesen Thread.

  • Upvote 1
Posted

Wäre der Indikator in MT4 ohne großen Aufwand für Dich realisierbar, bzw. hast Du etwas Ähnliches schon programmiert?

Ich hab mal ein wenig mit MT4 rumprogrammiert.

Das Ergebnis ist zwar noch nicht wirklich fertig, ich poste es hier aber trotzdem mal, da ich die nächsten 2 Wochen im Urlaub bin und mir verboten wurde einen Rechner mitzunehmen :hmmmm:

Die Umsetzung ist ähnlich wie beim periode_converter Script, ich löse das Problem aber mit einem EA.

Folgende vorgehensweise:

1) das *.ex4 File in den expert-Ordner kopieren

2) in Metatrader Experts und DLLs zulassen

3) den EA in den Basis-Chart ziehen. Man erhält das Parameter-Fenster:

01_ParWindow.jpg

4) Hier als ersten Parameter den 2. Wert (also im Beispiel EURJPY) eingeben.

Der SpreadTimeFrame ist eigentlich egal. Der wird nur an den Dateinamen angehängt.

5) Factor1 ist wichtig. Die Berechnung der Bars sieht nämlich so aus

Values[0] =MathAbs(NormalizeDouble(100+High[0]*Factor1*Pip_Value1-iHigh(SymbolTwo,0,0)*Pip_Value2,Digits));

Man gleicht also mit diesem Faktor den unterschiedlichen Kurs und den unterschiedlichen Pip-Wert aus.

Den Offset von 100 brauche ich, da ich die Kurse in ein History-File schreibe und da keine negativen Werte möglich sind. Die Nulllinie ist also bei 100.

6) mit LimitHistoryBars erreicht man, dass nicht alle Werte der Kurs-History berechnet werden, sondern nur die angegebene Zahl. Will man alle, dann den Wert auf "0" setzen

7) Beim nächsten Tick fängt die Berechnung an. Wenn fertig erscheint oben im Chart ein Kommentar

01_Comment.jpg

8) Jetzt ist das History-File erzeugt und man kann über "Datei - Chart offline öffnen" das erzeugte History-File aufmachen. Der Name ist "Name Wert1 +"SP", M2" also z.B. EURUSDSP,M2

 

Das war's eigentlich auch schon. Man kann nun in diesem Fenster den Spread zwischen den beiden Werten sehen, kann Indikatoren rein ziehen, aber nicht den Timeframe verändern. Der ist der selbe wie beim Basiswert, in dem der Indikator läuft.

 

Wenn alles passt, dann sollte etwa so aussehen:

01_Chart.jpg

 

Es gäbe noch eine Menge zu optimieren. So werden die Candles momentan einfach auf der aktuellen Zeitbasis über HochWert1 - HochWert2 oder CloseWert1-CloseWert2...

berechnet. Geschickter wäre es, Live-Modus die echten Tick-Werte zu nehmen und diese für jeden Candle einzeln auszuwerten.

Die Normierung ist auch noch recht umständlich. Man benötigt die Pip-Werte der einzelnen Werte und muss sich dann einen vernünftigen Normierungsfaktor über

Faktor1 = KursWert2*PipWert2/(KursWert1*PipWert1) ausrechnen. Das sollte auch noch automatisiert werden.

Und dann wäre es noch schöner, wenn die historischen Werte nicht auf Basis der Chart-Timebase berechnet würden, sondern über die M1-Werte und dann über den

Parameter SpreadTimeFrame auf die gewünschte Zeitbasis hochgerechnet würden

Hab ich aber momentan keine Zeit dafür.

 

Nochmal die Warnung: Ich hab das ganze nur ganz rudimentär getestet...:mocking:

Wer Lust hat kann sich das Ergebnis mal anschaun und Feedback geben. Gerne dürft ihr auch selbst dran weiterprogrammieren...

 

Ich bin dann mal ab morgen weg! :laugh:

EA_0005_SpreadDisplay.zip

Posted

da ich die nächsten 2 Wochen im Urlaub bin und mir verboten wurde einen Rechner mitzunehmen :laugh:

Du ärmster, kann ja gar kein Urlaub ohne Lap sein, wie soll das gehen ?:door::mocking:

Na dann wünsche ich mal trotzdem gute Erholung !

 

Und nicht heimlich ins Internet Cafe gehen, könnte auffliegen :hmmmm:

Posted

So wie es aussieht handelt es sich zwar auch nur um eine Line-Darstellung, aber schon mal nicht schlecht... werde ich testen - Danke!

 

So sieht der heutige Intraday-Verlauf des Spreads zwischen dem 6E und ES aus... die Berechnung erfolgt richtig

Spread_6E_ES_16.08.10.png

Posted

...müßte also nur noch auf Candlestick geändert werden :mocking:

 

Um einen CandleStick zu bekommen, sollte man bzw. frau sich mal den Heikin-Ashi-Indikator anschauen.

 

public override void Plot(Graphics graphics, Rectangle bounds, double min, double max)
{...}

  • Upvote 1
Posted

...müßte also nur noch auf Candlestick geändert werden :laugh:

 

Jo - das wäre fein! :mocking:

 

Der Spread-Indikator funktioniert immer noch... nur hat leider heute der Wolfgang nicht funktioniert. :hmmmm:

 

An der markiertn Stelle (15:00 bis 16:00 Uhr), während einer Handelsspanne von ca. 300$ pro Kontrakt, zweimal rein und gleich wieder rausgeflogen... bevor es dann endlich weiter nach unten ging. Ein horizontales Grid sind übrigens 150$ pro Kontrakt.

Spread_6E_ES_17.08.10.png

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...