Geschrieben von Uwe am 28.11.2005, 06:34:
Hallo @firsttime!
Zitat: Original von firsttime Was mir in EXCEL sehr fehlt ist die schnelle Backtestmöglichkeit meiner Einstellungen. Das wird mir in EXCEL sehr, sehr mühsam gemacht (veränderte Einstellungen immer per Hand Zeile für Zeile zurück verfolgen ist anstrengend).
Nun, hier sollte jedoch Dir die Möglichkeit der VBA-Modul-Programmierung viel Arbeit abnehmen können, da Du eben genau dadurch, dass Du z.B. einen Zelleninhalt änderst, dessen Wert z.B. die Beobachtungslänge des Indikator darstellt, die Neuberechnung de Indikatoren bzw. des Systemverhaltens auslöst. Das ganze Verhalten, einschließlich der Vorgabewerte (INPUTS), kann natürlich auch über eine Dialogmaske gesteuert werden. Jedoch, wie ich meinem vorherigen Beitrag geschrieben hatte, ist eben das Programmieren der Indikatoren und Handelssysteme als SUB oder FUNCTION in VBA erforderlich. Im wesentlichen ist es nur eine Frage der Organisation und Darstellung der eingehenden Zahlen im Realtime-Betrieb, denn für den „statischen“ Prozeß des nachträglichen Testens mit historischer Zeitreihen reduziert sich die Arbeit auf den eigentlichen Auswertungsgang, da die Datenmenge bekannt ist.
Zitat: Original von firsttime Ich denke mal, dass ich die reinen Formeln aus EXCEL auch in die TS übernehmen könnte.
Ja, in der Regel und mutatis mutandis. Einzig ist zu bedenken, dass EasyLangue eine Interpretersprache ist, die nur eine gradlinige Ausführung von Programmbeginn zum Programmende zulässt. FOR-Schleifen, IF-THEN-ELSE-Konstruktionen und WHILE-WEND_Blöcke, sowie der Aufruf von FUNCTIONs und DLL-Funktionen, sind die alleinigen Gliederungsmöglichkeiten.
Ein Programmdurchlauf wird immer dann aktiviert, wenn eine Chartveränderung eintritt, i.d.R. durch das Laden einer Zeitreihe, durch das Setzen eines neuen Kurses, der über den GlobalServer gesetzt wird (ASCII-Daten können nur erweitert werden, indem die Datenreihe mit der Erweiterung neu geladen wird) oder ein Refresh des Chartwindows aktiviert wird.
Damit lassen sich allerdings auch die meisten Projekte der Charttechnik entwickeln und bearbeiten, und dass m.E. mit der notwendigen Übersicht..
Zitat: Original von firsttime Kann man in TS Indikatoren auf Indikatoren berechnen und das Ergebnis daraus wieder als Indikator ausgeben und dann dazu einen weiteren Indikator aus Indikator wieder mit diesem ersten in Bezug setzen?
Das ist die leichteste Übung für die TradeStation.
INPUTS: quote((high+low)/2), Len1(14), Len2(5)
VARS: vRSI(0), vAV(0);
vRSI = RSI(quote, Len1);
vAV = Average(vRSI, Len2);
Oder in einer Zeile:
vAV = Average(RSI(quote,Len1), Len2);
Hier also der gleitende Durchschnitt (Average) mit einer Periode 5 des RSIs mit einer Periodenlänge von 14, der auf der Grundlage der Zeitreihe (high+close)/2 berechnet wird.
Zitat: Original von firsttime Dazu kommt, dass die selben Berechnungen zweimal auszuwerten sind. Und zwar sind Kursdaten einmal täglich zu einem Fixpunkt zu berechnen und daneben Kursdaten mit den gleichen Indikatoreinstellungen stündlich auf den aktuellen Pivotkurs.
Ich bin nicht sicher, ob ich genau verstehe, was die Aufgabe ist. Generell ist es möglich, in einem Chartfenster zwei unterschiedliche Intervalllängen von gleichen oder unterschiedlichen Symbolen darzustellen. Indikatoren innerhalb eines Chartfensters können auf ausgesuchte Kursreihen (data1, data2, ....) in diesem Chartfenster bezogen werden.
Jedoch es ist zu beachten, das in der TradeStation nur die vom Globalserver gelieferten oder als Zeitreihe geladenen Werte (data1, data2, ....) als Kursdaten angesehen werden können. Differenzen zu einem Fixing, die daraus berechnet werden, sind dann Indikatoren.
Wenn Du also z.B. um 14:00 Uhr ein bestimmter Fixwert aus den Kursdaten berechnen willst, so geschieht das einfach mit dem Programmbefehl:
IF time = 1400 then FIX14 = Average(close of data1, Len);
Dieser Wert für FIX14 bleibt also als Variable solange erhalten, bis es wieder 14:00 Uhr des nächsten (Handels)Tages ist. Nun kann natürlich ein Indikator aufgebaut werden, der diesen Wert von FIX14 benutzt, jedoch ist es nicht möglich, Vergangenheitswerte innerhalb der Zeitreihe zu verändern.
code: Nebenbemerkung zur Zeitreihe:
Die Kurwerte Open, High, Low, Close, Volume, OpenInterest sowie die zugehörigen Zeitwerte,
Date und Time, werden für jeden Zeitintervall innerhalb eines Charts gebildet und als Zahlenvektor
gespeichert. Der Index läuft dabei in Richtung der Vergangenheit, wobei der Indexwert 0 das Ende
des aktuellen Zeitintervall repräsentiert:
date[n], time[n], open[n], high[n], low[n], close[n], …
….
date, time[i], open[i], high[i], low[i], close[i], …
…..
date[1], time[1], open[1], high[1], low[1], close[1], …
date[0], time[0], open[0], high[0], low[0], close[0], …
wobei date[i] > date[i+1] ist. Zu jedem Zeitpunkt t = 0 wird ein neuer Eintrag für die Kurwerte im
Chart erzeugt, nachdem die bisherigen Werte entsprechend um eine Stelle nach oben in der
Indexliste verschoben wurden. Anschließend wird genau ein Durchlauf der Berechnung für jeden
der geladenen Indikatoren und/oder Strategien gestartet. Dabei werden die Datenreihen der
Indikatorenwerte (z.B. vRSI oder vAV, wie oben verwendet) in gleicher Weise aufgebaut.
vRSI[n], vAV[n]
….
vRSI[i], vAV[i]
...
vRSI[1], vAV[1]
vRSI[0], vAV[0]
Bei diesem System ist es nicht möglich, Kursdaten einen anderen Wert zuzuweisen als den, den
sie über die geladene Zeitreihe erhalten haben (Kursdaten können keine „LWerte“ sein, sie können
als nicht auf der Linken Seite einer Zuweisung stehen!). Variable hingegen können sowohl „L“- als
auch „RWerte“ in einer Zuweisung sein.
Zitat: [I]Original von firsttime Zum Abschluss muß das Ergebnisse noch mit einem dritten kleineren Nebenindikator noch mal - sage ich mal - "überlagert" bzw. verglichen werden. Ob so was in TS möglich ist?
Ja, das sollte möglich sein, wie es vielleicht schon das kleine Beispiel zuvor erahnen lässt. Wenn du Deine EXCEL-Zellenformel darstellen möchtest, wird es vielleicht möglich sein, Dir die Umsetzung in EasyLanguage vorzustellen
Um beim obigen Beispiel zu bleiben, so könnte man aus den dortigen Ansätzen nun die Verknüpfung erstellen, die einen „Gewichteten RSI“ darstellt:
wRSI = 0.3*vRSI + 0.7*vAV
wobei noch zu erwähnen ist, dass die Indexbezeichnung [0] bei Variablen- und Kurs-/Zeitbenennungen entfallen kann.
wRSI kann nun mit wRSI[2] verglichen werden, und es kann eine Entscheidung darauf aufgebaut werden.
Zitat: Original von firsttime Weiters kann ich in Excel die Kurse mitttels eines Kursreglers in die Zukunft verändern (erhöhen bzw. vermindern) und sehe anhand der dann ausgeworfenen Indikatoren "was aller Wahrscheinlichkeit kommen wird" und wo ich Ein- und Ausstiege setzen kann. Erhöhe den jetzigen Kurs um so viele Ticks für nächsten Tag, bis die jeweils speziellen Indikatoren jenen Punkt erreicht haben, wo das Kaufsignal daraus entstehen würde und wenn nächsten Tag genau zu einem bestimmten Zeitpunkt der Kurs überschtitten ist, dann Kaufe, egal wie hoch der Kurs dann gerade zu diesem Zeitpunkt steht. Bei Verkauf umgekehrt.
Hier ist ein Punkt, der mit EXCEL schneller lösbar ist, als es mit EasyLanguage zu bewerkstelligen ist. Wie bereits angedeutet, kann ein Durchgang der Indikatorenberechnung nur dadurch eingeleitet werden, dass ein zusätzlicher Kurs in den Chart eingetragen wird und/oder der Chart aktualisiert wird. Nun können Kurswerte aber nur jene Daten sein, die in der geladenen Zeitreihe bereits als Chartwerte gegeben sind bzw. über den Globalserver geliefert werden. Damit entfällt die einfache Möglichkeit einer „was-ist-wenn“-Darstellung, da man hierfür mit einem manuell erweiterten Kursdatenbestand arbeiten müsste.
Hier wäre im Einzelfall zu untersuchen, wie die Formel zu schreiben ist, damit die gewünschten Prognosewerte ermittelt werden können, denn es ist generell möglich, über einen Inputwert den Vorgabewert anzugeben und darauf dann intern den entsprechenden Zukunftswert des Indikators zu berechnen. Nur ist dieser Inputwert eben kein Kurswert in oben vorgestellten Sinn und auf jeden Fall auch nicht so komfortabel wie ein Regler zu verwenden.
Jedoch gibt es auch hier noch eine Möglichkeit, nämlich die, dass Du über eine DLL die entsprechenden Werte an EXCEL ausgibst, wo Du dann allerdings den Regler und seine Wirkung wieder programmieren musst.
Je nach Art des Prognosensatzes gibt es dann vielleicht auch noch die Umsetzung als Probability-Map um das Ergebnis zu visualisieren. Aber dieses alles sind Aufgabenstellungen, die am beschriebenen Projekt zu untersuchen wären, da sie allgemein nicht immer das Detail betrachten können, was dann für oder gegen die Realisierung wirkt.
Zitat: Original von firsttime TS 8.1: Muß man 10 x 100.000 machen oder genügt es auch einmal 1 Mille zu setzen, um die Software kostenlos zu schalten? Muß man jeden Monat 10 x 100.000 umsetzen? Es kommt beispielsweise vor, dass ich in einem Monat viermal was umsetzen muß und dann zwei Monate lang wieder gar nichts.
TS2000i: Im Grunde läuft mein eigenes Equipment (PCs mit Software) sowieso Tag und Nacht. Also sollte das mit dem GlobalServer genausogut funktionieren können.
Verstehe ich das richtig - HyperTraders DDE-Server liest in den GloablServer und TS 2000i empfängt die Daten dann realtime?
Da ich mich mit den HyperTrader-Server nicht auskenne, wird Klaus vielleicht Gelegenheit finden, hier zu antworten.
--- Ende Teil I ---- Fortsetzung im Teil II
|