Entwurf und Implementierung einer webbasierten Version des TInTo

Werbung
Rheinische Friedrich-Wilhelms-Universität Bonn
Institut für Informatik III
Nargis Hahn
Entwurf und
Implementierung einer
webbasierten Version des
TInTo-Systems zur
regelbasierten
Wertpapieranalyse
27. Dezember 2007
Diplomarbeit
Erstgutachter: Prof. Dr. Rainer Manthey
Erklärung
Hiermit erkläre ich, Nargis Hahn, diese Diplomarbeit selbständig verfasst
und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie
Zitate als solche kenntlich gemacht zu haben.
Bonn, den 27. Dezember 2007
Dankwort
An dieser Stelle möchte ich mich recht herzlich bei allen Personen bedanken, die diese Arbeit unterstützt haben. Zunächst gilt mein Dank Herrn
Prof. Dr. Rainer Manthey, der mir diese Arbeit ermöglicht hat. Herrn Dr.
Andreas Behrend möchte ich recht herzlich für die kompetente Betreuung
danken. Weiterhin möchte ich mich bedanken bei Emine Groche für die Zeit,
die in Anmerkungen und Korrekturen investiert wurde. Darüber hinaus gilt
mein herzlicher Dank meinem verstorbenen Vater, Gurbanov Yusuf, der mir
das Informatik - Studium in Deutschland ermöglicht hat. Last but not least
möchte ich mich vielmals beim meinen Man Eric einfach für alles bedanken.
Inhaltsverzeichnis
1 Einleitung
5
2 Relationale Datenbanken
2.1 Relationaler Datenbank - Entwurf . . .
2.2 SQL . . . . . . . . . . . . . . . . . . .
2.3 Relationale Datenbanksysteme . . . . .
2.3.1 Microsoft Access . . . . . . . .
2.3.2 Microsoft SQL Server . . . . . .
2.3.3 Oracle . . . . . . . . . . . . . .
2.3.4 Datenbanksysteme im Vergleich
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
10
12
13
14
15
17
3 Technische Wertpapieranalyse
3.1 Wertpapieranalyse . . . . . . .
3.1.1 Chart - Analyse . . . . .
3.1.2 Technische Indikatoren .
3.2 TInTo - Das Technical Indicator
3.2.1 Softwarearchitektur . . .
3.2.2 Datenbankschema . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
22
25
29
30
31
. . . . . . .
. . . . . . .
ADO.NET
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
34
34
36
40
42
. . .
. . .
. . .
Tool
. . .
. . .
4 Webbasierte Anwendung
4.1 Die .NET - Technologie . . . . . . .
4.1.1 Das .NET - Framework . . .
4.1.2 Zugriff auf Datenquellen mit
4.1.3 Programmiersprache C# . .
4.2 Die Ajax - Technologie . . . . . . .
.
.
.
.
.
.
5 Entwurf einer webbasierten TInTo - Anwendung
47
5.1 Anforderungsprofil und Anwendungsfall . . . . . . . . . . . . . 47
5.2 Neuentwurf der Softwarearchitektur . . . . . . . . . . . . . . . 50
5.3 Erweiterung des Datenbankschemas . . . . . . . . . . . . . . . 54
6 Ausgewählte Aspekte der Programmierung
6.1 Struktur der webbasierten Anwendung . . . . . . .
6.1.1 Programmlogik . . . . . . . . . . . . . . . .
6.1.2 Präsentationslogik . . . . . . . . . . . . . .
6.2 Umsetzung der Indikatoren in Oracle . . . . . . . .
6.2.1 Umformulierung der Indikatoren - Definition
6.2.2 Ausführung der Indikatoren . . . . . . . . .
7 Beispielszenarien
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
57
57
59
61
62
64
67
3
8 Bewertung und Ausblick
73
A Installation und Konfiguration der TInTo-Webanwendung
76
4
1
Einleitung
Das Internet drängt immer mehr in alle Bereiche des täglichen Lebens, gleich
ob es private, geschäftliche oder finanzielle sind. Das Bedienen einer Anwendung, welche auf einem entfernten Server ausgeführt wird, ist längst keine
Seltenheit mehr, insbesondere webbasierten Anwendungen haben in den letzten Jahren stark an die Popularität gewonnen. Der Vorteil solcher Anwendungen ist, daß der Benutzer auf seinem Rechner im Wesentlichen nur einen
Internet Zugang und einen internetfähigen Browser wie z. B. den Internet
Explorer von Microsoft installiert hat. Auf diese Weise wird einem Benutzer
die umfangreiche Installation, Konfiguration und die Wartung einer webbasierten Anwendung erspart.
Das Ziel dieser Diplomarbeit ist, für das Technical Indicator Tool (TInTo)
- System eine webbasierte Anwendung zu realisieren. Dabei soll eine parallele
Mehrbenutzung dieser Anwendung gewährleistet werden.
TInTo ist eine Software zur technischen Wertpapieranalyse, und basiert
auf einer relationalen Datenbank. Die Entwicklung des TInTo - Systems wurde in mehreren wissenschaftlichen Arbeiten vorangetrieben. Eine erste lauffähige TInTo - Version wurde im Rahmen einer Diplomarbeit von Christian
Hübel [19] vorgestellt, deren Weiterentwicklung in der Diplomarbeit von Gereon Schüller [23] fortgeführt wurde. In dieser Arbeit sollen die Kernfunktionalitäten dieses Systems in eine webbasierte Anwendung übernommen und
zusätzlich eine Benutzer - Verwaltung für das System realisiert werden.
Der fachliche Gegenstand des TInTo - Systems ist die technische Analyse
von Wertpapieren. Die technische Analyse stellt Methoden zur Verfügung,
mit deren Hilfe Erfassung und Interpretation beispielsweise von Kursverläufen auf Finanzmärkten ermöglicht wird. Als Basis für die Berechnung der
Kursverläufe werden Eröffnungs -, Höchst -, Tiefst - und Schlußkurs des
betrachteten Wertpapiers für einen vorgegebenen Zeitraum genommen. Bei
der Erfassung von Kursdaten von Wertpapieren werden meistens zwei Arten unterschieden. Mit den sogenannten End Of Day - Kursdaten werden
Eröffnungs-, Höchst-, Tiefst - und Schlußkurs eines Tages betrachtet werden.
Mit Intraday - Kursdaten werden diese vier Kurse in kürzeren Zeiträumen
(z. B. 1 Sekunde, 20 Minuten) innerhalb eines Tages bestimmt werden. Im
Rahmen dieser Diplomarbeit wird die Analyse der End of Day - Kursdaten
realisiert.
Zu den verbreiteten Werkzeugen der technischen Wertpapieranalyse gehö5
ren Indikatoren - und Chart - Analyse. Bei der Indikatoren - Analyse werden
statistische Formeln bereitgestellt, anhand deren eine Vorhersage über die
Entwicklung der Finanzmärkte getroffen und ein Signal zum Kauf oder Verkauf bestimmt werden kann. Die Chart - Analyse dient dem gleichen Zweck,
allerdings werden die Aussagen anhand der Diagramme getroffen.
Abbildung 1: Die webbasierte TInTo - Anwendung.
Die Entwicklung einer webbasierten Anwendung kann anhand mehrerer
Technologien umgesetzt werden. die Implementierung der webbasierten TInTo - Anwendung wird in Rahmen dieser Arbeit mit der .NET - Technologie
realisiert. Programme der .NET - Plattform werden unter Verwendung einer
objektorientierten, virtuellen Maschine und einer gemeinsame Klassenbibliothek, der sog. Framework Class Library ausgeführt. Mit dem .NET - Framework rückt auch der Begriff ADO.NET in den Vordergrund. ADO.NET
ist eine Schnittstellendefinition zur Vereinheitlichung des Zugriffs auf unterschiedliche Datenquellen.
Der inhaltliche Aufbau der Arbeit ist in acht Teile gegliedert: Im ersten
Teil des Kapitels 2 werden die Grundlagen relationaler Datenbanken vorgestellt und das relationale Datenmodell sowie die relationale Anfrage - Sprache
6
SQL eingeführt. Im zweiten Teil dieses Kapitels werden die meist verbreiteten Datenbanksysteme Microsoft Access, Microsoft SQL Server und Oracle
vorgestellt. Anschließend werden diese untereinander verglichen. Das Kapitel 3 beschäftigt sich zum einen mit der fachlichen Thematik dieser Arbeit,
der technischen Wertpapieranalyse, zum anderen werden die Kernfunktionalitäten, die Softwarearchitektur und das Datenbankschema des bestehenden
TInTo vorgestellt. In Kapitel 4.1 wird das notwendige Wissen für die Entwicklung der webbasierten Anwendung vermittelt. Zuerst werden die Eigenschaften der webbasierten Anwendung beschrieben, anschließend werden die
.NET - und Ajax - Technologie vorgestellt.
Nach dem einführenden Teil der Arbeit wird die Umsetzung der webbasierten TInTo - Anwendung beschrieben. Im Kapitel 5 werden die Anforderungen analysiert und Anwendungsfall abgeleitet. Des weiteren werden
die neue Softwarearchitektur sowie die Erweiterung des Datenbankschemas
beschrieben. Ausgewählte Aspekte der Programmierung wie Programmcode
- Struktur der TInTo - Anwendung und die Umsetzung der Indikatoren in
Oracle werden in Kapitel 6 beschrieben. Anhand zweier Beispielszenarien,
„Wertpapier Analysieren“ und „Benutzer Verwalten“, wird die Funktionsweise der webbasierten TInTo - Anwendung erläutert. Im Anhang werden anschließend die für die Installation und Konfiguration notwendigen Schritte
beschrieben.
7
2
Relationale Datenbanken
Relationale Datenbanken werden überall dort eingesetzt, wo es um die Datenaufbewahrung und Datenverwaltung geht. Das von E. F. Codd in den
70er Jahren entwickelte Konzept des relationalen Modells bildet die Grundlage der relationalen Datenbanken. Die wesentlichen Aspekte des relationalen
Datenmodells [24] werden im Abschnitt 2.1 erläutert und im darauf folgenden Abschnitt 2.2 wird die relationale Datenbanksprache Structured Query
Language (SQL) vorgestellt [13]. Weiterhin werden die relationale Datenbankmanagementsysteme Microsoft Access (Abschnitt 2.3.1), Microsoft SQL
Server (Abschnitt 2.3.2) und Oracle (Abschnitt 2.3.3) beschrieben und anschließend einzelne Aspekte der jeweiligen Datenbankmanagementsysteme
verglichen (Abschnitt 2.3.4).
2.1
Relationaler Datenbank - Entwurf
Bei dem Entwurf des relationalen Datenmodels wird häufig auf das Entity
Relationship Modell (ER - Modell) zurückgegriffen, welches bei dem konzeptuellen Entwurf der relationalen Datenbank verwendet wird. Im ER - Modell
werden Objekte der realen Welt als Entities und deren Zwischenbeziehungen
als Relationships bezeichnet. Allgemein werden drei Beziehungstypen unterschieden:
• (1:1) - Beziehung: Jedes Objekt aus einem Entity steht in Beziehung
zu höchstens einem Objekt aus dem anderen Entity.
• (1:N) - Beziehung: Jedes Objekt aus einem Entity steht in Beziehung
zu mindestens einem Objekt aus dem anderen Entity.
• (N:M) - Beziehung: Mindestens ein Objekt aus einem Entity steht in
Beziehung zu mindestens einem Objekt aus dem anderen Entity.
Zusätzlich werden zu den Entities und Relationships Attribute zugeordnet,
die die Eigenschaften der jeweiligen Entity bzw. des Relationships beschreiben. In einem Entity Relationship Diagramm (ER - Diagramm) werden Entitätstypen und Beziehungstypen grafisch dargestellt (siehe Abbildung 2).
Im relationalen Datenmodell werden Daten mengenorientiert verarbeitet,
wobei das Konzept der relationalen Algebra benutzt wird. Aus mathematischer Sicht ist eine Relation R eine Teilmenge des kartesischen Produkts
D1 × D2 × ... × Dn :
R ⊆ D1 × D1 × ... × Dn ,
8
Abbildung 2: Das ER - Diagramm, welches eine N:M - Beziehung zwischen
Student- und Vorlesung - Entity abbildet. Die Beziehung wird mittels einer Raute symbolisiert und die Attribute der jeweiligen Entities mit ovalen
Kreisen dargestellt.
D1 × D2 × ... × Dn = {(d1 , d2 , ..., dn )|dj ∈ Dj , j = 1, 2, .., n},
wobei D1 , D2 , ..., Dn beliebige Mengen (die auch Werterbereiche oder Domänen heißen), (d1 , d2 , ..., dn ) ein n-Tupel und dj die j-te Komponente ist.
Im Datenbank - Sinne wird eine Relation durch eine Tabelle abgebildet,
deren Spalten die Attribute repräsentieren und deren Zeilen den Tupeln entsprechen. Um es zu verdeutlichen sei die Relation Studenten dargestellt:
MatrNr
12314
Studenten
Name
Semester
Musterman 5
Hier enthält die Relation ein dreistelliges Tupel, dessen Attributwerte aus
den Domänen integer, string und integer stammen:
Studenten ⊆ integer × string × integer
Die dazu gehörige Relationenschemata lautet also:
Studenten : {M atrN r : integer, N ame : string, Semester : integer}
Ein Schema der relationalen Datenbank spezifiziert, welche Daten gespeichert werden und wie deren Beziehung zu einander ist.
Anhand eines Schlüssels (Candidate Key) wird eine Tupel in der Relation
identifiziert. Dieser Schlüssel setzt sich aus einer minimalen Menge von Attributen zusammen, für die gilt, daß kein zweites Tupel dieser Attributmenge
die gleichen Werte annehmen darf. Hat eine Relation zwei Schlüssel, dann
kann einer von beiden als Primärschlüssel (Primary Key) festgelegt werden,
9
wobei dieser niemals einen NULL - Wert enthalten darf. Im obigen Beispiel
ist die Matrikelnummer der Primärschlüssel der Relation Studenten. Eine Relation kann auch einen Schlüssel anderer Relation enthalten, den sogenannten
Fremdschlüssel (Foreign Key). Mittels dieses Fremdschlüssels werden die aus
dem ER - Modell bekannten Beziehungen zwischen Relationen realisiert.
2.2
SQL
Zur Definition, Manipulation und Abfrage von Daten in kommerziellen relationalen Datenbanken wird nahezu ausschließlich die Datenbanksprache
Structured Query Language (SQL) eingesetzt.
SQL, die in ihrer ersten Version Structured English Query Language (SEQUEL) hieß, wurde Ende der 70er Jahre bei IBM für die relationale Datenbank DB2 entwickelt. Der erste SQL - Standard wurde im Jahr 1986 durch
das American National Standards Institute (ANSI) und ein Jahr später durch
die International Standards Organization (ISO) veröffentlicht. Danach folgten mehrere Versionen von SQL, der erste am Markt etablierte SQL - Standard wurde allerdings erst 1992 veröffentlicht (SQL92 Standard).
SQL läßt sich in sechs Sprachbereiche unterteilen:
• Die Data Query Language (DQL) beinhaltet die Anweisungen, die für
das Auswählen, Aufbereiten und Auslesen der Datenbankdaten zuständig sind. Schlüsselwörter sind SELECT, WHERE, ORDER BY,
GROUP BY und HAVING und zur Formulierung von Unteranfragen (IN, ANY, ALL, EXISTS), Schnittmengen und Joins. Sehr oft
werden die DQL - Anweisungen in Kombination mit anderen SQL Anweisungskategorien verwendet.
• Mit der Data Definition Language(DDL) werden Objekte des Datenbankschemas definiert. Die von ANSI hierfür reservierten Wörter sind
CREATE, DROP und ALTER. Mit DDL - Anweisungen werden Tabellen, Sichten, Indexe, Prozeduren und weitere Strukturelemente der
Datenbank beschrieben.
• Bei der Data Manipulation Language (DML) handelt es sich um die
Teilsprache, die für das Einfügen, Ändern und Löschen von Daten zuständig ist. Die DML - Befehle sind INSERT, UPDATE und DELETE. Die DQL - Anweisungen werden oft den DML - Anweisungen
zugeordnet, da nach vorherrschender Meinung auch die DQL - Befehle
die Daten manipuliert ausliefern.
10
• Die Transaction Processing Language (TPL) sorgt dafür, daß alle DML
- Anweisungen in einer Transaktion aktualisiert werden. Hierbei werden die DML - Anweisungen in einen Block zusammengefaßt, welcher
mit den Schlüsselwörtern BEGIN TRANSACTION und COMIT
TRANSACTION umschlossen wird.
• Mittels der Data Control Language (DCL) lassen sich rollen- oder gruppenbasierter Zugriffe auf Datenbankobjekte definieren, wobei auf die
DCL - Befehle GRANT und REVOKE zurückgegriffen wird.
• Die Cursor Control Language (CCL) besteht aus Anweisungen, die
einzelne Datensätze einer Tabelle bearbeiten. Zu den CCL - Befehlen
gehören DECLARE CURSOR (definiert einen Zeilenzeiger für eine
Tabelle), FETCH INTO (bewegt den Zeiger zur nächsten Zeile) und
UPDATE WHERE CURRENT (aktualisiert die Zeile, auf die der
Zeiger zeigt). CCL - Anweisungen werden oft in gespeicherten Prozeduren oder Funktionen verwendet.
Eine wichtige Thematik in der Programmierwelt stellt die Kopplung der SQL
- Anweisungen mit einer klassischen Programmiersprache (z.B. Visual Basic,
C#) dar. Hierzu existieren die folgenden drei Möglichkeiten:
• Embedded - SQL
• Call Level Interface
• Persistent Stored Module
Bei Embedded - SQL handelt es sich um eine SQL - Erweiterung, welche mit
SQL92 zum erstmal eingeführt wurde. Embedded - SQL erlaubt die SQL
- Anweisungen direkt in den Programmcode einzubetten, wobei zwei Arten
der SQL - Anweisungen unterschieden werden. Zum einen statisches SQL,
bei welchem die SQL - Anweisungen zum Zeitpunkt der Programmierung
festgelegt werden und zum anderen dynamisches SQL, bei welchem die SQL
- Anweisungen erst zum Zeitpunkt der Ausführung erstellt werden.
DasCall Level Interface (CLI) ist eine vereinheitliche Datenbankschnittstelle, mit der eine Bibliothek von Prozeduren und Funktionen zur Verfügung
gestellt werden. Jedes relationale Datenbankmanagementsystem (siehe Abschnitt 2.3) verfügt über mindestens eine CLI. Als Beispiel seien an dieser
11
Stelle die Open Database Connectivity (ODBC)1 - API und Java2 Database
Connectivity (JDBC)3 - API erwähnt.
Persistent Stored Modules (PSM) sind SQL - Scripte oder auch in einer
klassischen Programmiersprache geschriebene Module, welche innerhalb der
Datenbank gespeichert werden. PSM gehören zur SQL - Erweiterung, welche
erst mit SQL99 standardisiert wurde. PSM wird mit der call - Anweisung
angesprochen und ausgeführt. Jedes Datenbankmanagementsystem hat für
PSM vorgesehene Programmiersprachen. In Oracle wird beispielsweise Procedural Language/SQL (PL/SQL) und in Microsoft SQL Server Transact-SQL
(T-SQL) verwendet.
2.3
Relationale Datenbanksysteme
In den vorigen Abschnitten wurden das den relationalen Datenbanken zugrunde liegende relationale Datenmodell und die für die Definition und Manipulation der Datenbankdaten entwickelte Anfragesprache SQL vorgestellt.
Eine Datenbank ist im Wesentlichen eine strukturierte Ansammlung von
Daten, die in Tabellen zusammengefaßt und kategorisiert werden. Das Abspeichern und das Auffinden der Datenbankdaten, die Festlegung des rollenbasierten Zugriffs auf eine Datenbank sowie das Bereitstellen sämtlicher
Datenoperationen in einer Datenbank sind die essentiellen Aufgaben eines
Datenbankmanagementsystems (DBMS). In einem DBMS können ggf. mehrere Datenbanken erstellt und verwaltet werden. Die Datenbank und das
DBMS sind die Komponenten eines Datebanksystems
Seit den 70er Jahren wurde eine Vielzahl an Datenbanksysteme, denen
das relationale Datenmodell zugrunde liegt, entwickelt. Zu den bekanntesten
relationalen Datenbanksystemen (RDBS) gehören Microsoft Access, Microsoft SQL Server und Oracle (für die bessere Lesbarkeit wird nachfolgend
die Bezeichnung Microsoft bei Access und SQL Server weggelassen ). Diese
werden in nachfolgenden Abschnitten näher vorgestellt.
1
ODBC ist eine standardisierte Datenbankschnittstelle, die SQL als Datenbanksprache
verwendet.
2
Java ist eine objektorientierte Programmiersprache, welche im Jahre 1995 von der
Firma Sun Microsystems veröffentlicht wurde.
3
JDBC ist eine Datenbankschnittstelle der Java - Plattform, die eine einheitliche
Schnittstelle zu Datenbanken verschiedener Hersteller relationaler Datenbanken bietet
12
2.3.1
Microsoft Access
Access ist ein RDBS für das Microsoft Windows - Betriebssystem und ist
(neben Microsoft Word und Microsoft Excel) der Bestandteil des Microsoft
- Office Pakets. Es wurden mehrere Versionen von Access, angefangen von
MS Access 97 Standard Edition bis Access 2007, durch Microsoft auf dem
Markt gebracht. Allerdings ist an diese Stelle anzumerken, daß die Access Versionen keine gravierenden Unterschiede untereinander vorweisen. Als Informationsquelle für dieses Kapitel diente die Microsoft Access Homepage
[14].
Access ist ein interaktives Datenbankmanagementsystem mit einer grafischen Benutzeroberfläche (GUI), wodurch der einfache und visuelle Zugriff
auf die Daten mit der Mächtigkeit von SQL ermöglicht wird. Access basiert
auf den SQL92 - Standard und verfügt mit der Programmiersprache Access
Basic über die Möglichkeit, komplexe Anwendungen zu realisieren. Durch
den Einsatz von ActiveX Data Objects (ADO) kann man auch mit anderen
Programmiersprachen, wie Visual Basic, Delphi und weitere, eine Access Anwendung schreiben. Durch die ODBC - Schnittstelle wird ein Zugriff auf
heterogene Access - Datenquellen ermöglicht.
Access lasst sich in zwei Kernkomponente unterteilen. Zum einen die Microsoft Jet Engine, welche den eigentlichen Datenbankern bildet. Zum anderen die Benutzeroberfläche, welche die Engine anspricht, um Datendefinitionen und -manipulationen durchzuführen. Der Benutzer kann in Access neben
Tabellen und Abfragen auch weitere Anwendungsobjekte erstellen:
• Mit Formularen wird die Oberfläche (GUI) einer Access - Anwendung
erstellt. Der Benutzer wird durch Formularassistenten bei der Entwicklung seiner Formulare unterstützt. Zudem steht dem Benutzer eine breite Palette an Steuerelementen zur Verfügung, die per Drag and Drop
in die Formularen eingebunden werden können.
• Berichte sind für die Gruppierung, die Sortierung und die übersichtliche Darstellung von Daten zuständig. Auch hier kann man auf die
Unterstützung von Assistenten zurückgreifen.
• Makros sind aufgezeichnete Abfolgen von Aktionen. Wie auf ein Ereignis reagiert werden soll, wird durch den Benutzer spezifiziert.
• Module sind Ansammlungen von Deklarationen, Anweisungen und Prozeduren, die in benannten Einheiten gespeichert werden. Die Module
werden mit Access - Basic geschrieben.
13
Die aufgeführten Anwendungsobjekte werden in einer einzigen Microsoft Datenbankdatei (.mdb - Datei) gespeichert. Access kann als eine vollständige Anwendungsentwicklungsumgebung gesehen werden, welche den Benutzer
bei der Erstellung einer Datenbank - Anwendung unterstützt.
2.3.2
Microsoft SQL Server
In diesem Kapitel wird das von Microsoft für Microsoft Windows - Plattformen entwickelte RDBS Microsoft SQL Server vorgestellt. Die Informationen
in diesem Teilkapitel beruhen auf der Homepage des MS SQL Servers [15].
Microsoft hat SQL Server ursprünglich in Kooperation mit der Firma Sybase für die Plattform IBM OS/2 entwickelt. Eigenständige Weiterentwicklung des SQL Servers, welcher im Jahre 1993 in der Version 4.21 erschien,
hat Microsoft mit dem Erscheinen des Betriebssystems Windows NT betrieben. Dem SQL Server 4.21 folgten die Versionen des SQL Server 6.0 und 6.5.
All diese genannten Versionen basieren auf Sybase - Codebasis. Erst mit der
Version SQL Server 7 wurde von Microsoft eine neue Datenbank - Engine
entwickelt, die ebenfalls in die SQL Server 2000 und SQL Server 2005 übernommen wurde. Im Jahr 2008 bringt Microsoft den SQL Server 2008 auf den
Markt. Ab der Version SQL Server 2000 wird dem Benutzer eine Plattform
bereitgestellt, die nicht nur für das Datenmanagement, sondern auch für die
Datenanalyse geeignet ist. Hiermit sind unter anderem die Analysis 4 - und
Reporting - Services 5 und Volltextsuche 6 zu verstehen. Der Kerndienst zum
Verwalten von Daten des SQL Servers ist die Datenbank - Engine. Zu den
Aufgaben des Datenbankmoduls gehören das Erstellen von Tabellen, Indexe und Sichten sowie das Anzeigen, Verwalten und Sichern von Daten. SQL
Server unterstütz zusätzlich die Erstellung folgender Datenbankobjekten:
• Indexe sind Datenstrukturen, die direkten Zugriff auf Tupel mittels
Attributwerten ermöglichen.
• Trigger (deutsch Äuslöser") verknüpfen ein Ereignis in einer Tabelle mit bestimmten Aktionen. Ein auslösendes Ereignis kann INSERT,
UPDATE oder DELETE und ein ausgelöste Aktion kann eine beliebige
gespeicherte Prozedur sein.
4
Der Einsatz von Analysis Services ist besonders für das Vorbereiten von Auswertungen
der relationalen und der multidimensionalen Daten vorteilhaft.
5
Möchte der Benutzer Berichte über die Inhalte von relationalen und multidimensionalen Datenquellen erstellen, so greift man auf Reporting Services des SQL Servers zu.
6
Die Volltextsuche ermöglicht die schnelle und flexible Indizierung für die schlüsselwortbasierte Abfrage von Textdaten.
14
• Eine gespeicherte Prozedur ist eine Abfolge von mehreren SQL-Anweisungen
in einem Block, welche auf dem Datenbankserver gespeichert und ausgeführt wird. Die koppelt wiederkehrenden Datenbankanfragen in einem einzigen Aufruf.
• Eine gespeicherte Funktion wird entspricht der gespeicherte Prozedur,
zusätzlich wird von einer Funktion einen Rügabewert erwartet.
Hierfür stellt SQL Server das grafische Tool SQL Enterprise Manager und
den Query-Analyzer zur Verfügung.
Für SQL Server wurde eine eigene Datenbank - Programmiersprache
Transact-SQL (T-SQL) entwickelt. T-SQL erweitert lediglich die SQL - Befehle um eigene Befehle, wodurch die Datenbankverwaltung flexibler wird.
Unter Datenbankverwaltung ist z.B. Erstellen, Ändern und Löschen von Tabellen, Sichten und Indexen, Programmieren von Triggern und gespeicherten
Prozeduren oder Funktionen zu verstehen. Zusätzlich ist es mit T-SQL möglich, die Änderungen an der Konfiguration von SQL Server und Ad-Hoc Abfragen über die grafischen Query Analyzer vorzunehmen.
Was besonders an SQL Server 2005 noch hervorzuheben ist, ist die Integration der Common Language Runtime 7 (CLR) in die Datenbankmaschine. Dadurch kann der Entwickler in den klassischen Programmiersprachen
VB.NET oder C# Datenbankobjekte implementieren, wobei darunter gespeicherte Prozeduren, benutzerdefinierte Funktionen und Datentypen, Aggregatfunktionen und Trigger zu verstehen sind.
2.3.3
Oracle
Ein weiteres auf dem Markt etabliertes RDBS ist das Oracle DBS der Firma Oracle. Die erste markttaugliche Oracle Version wurde im Jahre 1979
von der Firma Relational Software Inc. (RSI), die ihren Namen vier Jahre
später in Oracle Corporation änderte, veröffentlicht. Seit der ersten Version
wurden von Oracle Corporation in regelmäßigen Abständen weitere Oracle
- Versionen auf den Markt gebracht, die derzeit aktuellsten die im August
2007 erschienene Version Oracle 11g ist. In diesem Abschnitt wird allerdings
der Fokus auf die Vorgängerversion Oracle 10g gelegt, wobei als Hilfsquelle
die Produkt - Dokumentation auf der Oracle Homepage [16] benutzt wird.
Oracle ist ein mächtiges Datenbanksystem, welches sowohl relationale
und multidimensionale als auch die objektorientierte Datenquellen verwalten
7
CLR ist die Laufzeitumgebung der .NET - Plattform (siehe Kapitel 4.1).
15
kann. Wie jedes andere Datenbanksystem besteht Oracle aus einer Datenbank und einem Datenbankmanagementsystem. Die Oracle - Datenbank ist
eine Sammlung von unterschiedlichen physischen Dateien: die Datendateien,
die Redo Log - Dateien, welche Datenblockänderungen von Transaktionen
aufnehmen, und die Kontrolldateien, welche die Struktur- und Zustandsinformation der Datenbank enthalten. Das Oracle - Datenbankmanagementsystem besteht aus
• Oracle - Instanzen, die aus Hintergrundprozessen und aus einem gemeinsamen Arbeitspeicher (Shared Memory), worauf die Hintergrundprozesse operieren, bestehen. Zu den Aufgaben von Hintergrundprozessen gehören unter anderem die Zugriffsregelung, das Speichern von
Daten- und Redo Log - Dateien, Wiederherstellung der Benutzerdaten
und Überwachung von Oracle - Prozessen.
• Benutzer- und Server - Prozesse sind für das Ausführen von SQL Anweisungen zuständig, wobei der Benutzer - Prozeß nur durch das
Starten des Server - Prozesses den Kontakt mit der Oracle - Instanz
aufnimmt, um die angefragten Ergebnisse zu bekommen. Damit der
Benutzer - Prozeß die Server - Prozesse startet, muß dieser sich beim
Listener - Prozeß registrieren.
Auch Oracle bietet eine eigene Datenbanksprache, die sogenannte Procedural Language/SQL (PL/SQL). PL/SQL ist, wie der Name schon verrät,
eine prozedurale Sprache, welche SQL um ein Sprachbereich erweitert. In
diesem Sprachbereich werden Variablen, Bedingungen, Schleifen und Ausnahmebehandlungen unterstützt. Mit PL/SQL lassen sich nicht nur gespeicherte Prozeduren8 und Datenbanktrigger, sondern auch Oracle - Formulare
und Oracle - Berichte programmieren.
Durch die integrierte Java - Laufzeitumgebung (JVM) in der Datenbank
wird den Nicht - PL/SQL - Entwicklern ermöglicht auch Java - Prozeduren
in Oracle zu speichern und auszuführen. Interessant ist die Tatsache, daß ab
dem Oracle 10g Release 2 Datenbank - Erweiterungen für .NET mit Microsoft .NET Support über gespeicherte Prozeduren angeboten werden. Es sind
Oracle Developer Tools für Visual Studio .NET9 , womit auch in .NET geschriebene Prozeduren in Oracle Datenbank gespeichert und benutzt werden
können.
8
9
Bibliotheken von gespeicherten Prozeduren werden als PL/SQL - Pakete bezeichnet.
Visual Studio .NET ist die Entwicklungsumgebung der .NET - Plattform
16
2.3.4
Datenbanksysteme im Vergleich
In diesem Kapitel wird eine Diskussion über die in den vorigen drei Abschnitten vorgestellten relationalen Datenbanksysteme Access, SQL Server
und Oracle eröffnet, wobei die Vor - und die Nachteile der jeweiligen Datenbanksysteme erörtert werden.
Alle drei oben erwähnten Datenbanksysteme sind käuflich zu erwerben.
Nur die reduzierten Varianten des SQL Servers (SQL Server Express Edition) und der Oracle DBS (Oracle Database Express Edition) sind für die
kommerziellen Zwecke kostenlos erhältlich. Die vollständigen Varianten von
Access und SQL Server werden von der MSDN Academic Alliance zur Verfügung gestellt, allerdings mit der Voraussetzung, daß diese ausschließlich für
Forschung und Lehre eingesetzt werden. Analog geht auch Oracle Corporation vor, indem sie die vollständige Version von Oracle DBS nur für die private
Nutzung zur Verfügung stellt. Im folgenden werden nur vollständigen Varianten der jeweiligen Datenbanksysteme betrachtet.
Mit Access lassen sich schnell und unkompliziert Datenbank - Anwendungen erstellen. Außerdem ist es bedeutend kostengünstiger in Programmierung
und Betreibung als seine Konkurrenz. Access eignet sich gut, wenn die Größe
der benutzten Datenbank niemals 2GB Datenvolumen überschreitet und nur
eine kleine Anzahl an Benutzern parallel auf die Datenbank - Anwendung
zugreift.
Was die Nachteile bzw. die Vorteile von Access sind, werden zu den Vorteilen bzw. den Nachteilen von Oracle und SQL Server. Diese beiden Datenbanksysteme haben nahezu keine Größeneinschränkung und sind durch
ausgeklügelten Cache - Mechanismen besonders gut für den Mehrbenutzerbetrieb geeignet. Sowohl SQL Server als auch Oracle sind komplexere Datenbanksysteme und können nicht nur relationale, sondern auch, im Gegensatz
zu Access, multidimensionale und objektrelationale Datenquellen verwalten.
Möchte man SQL Server und Oracle vergleichen, so sind die unterschiedlichen Sichtweisen bezüglich der Datenbank - Verwaltung hervorzuheben.
Oracle weist jedem Datenbank - Benutzer eine eigene DMBS - Umgebung
zu, das heißt benutzerspezifischen Tabellen, Prozessen, Dateien, Puffern und
weitere Objekte des Datenbankschemas. SQL Server hingegen hat eine DBMS
- Umgebung für alle Datenbank - Benutzer, denen nur eigene Tabellen und
Daten zugeordnet werden.
17
Ein weiterer interessanter Aspekt, welcher den Unterschied zwischen Access, SQL Server und Oracle verdeutlicht, ist deren Handhabung von materialisierten Sichten10 . Eine materialisierte Sicht ist dann von Vorteil, wenn
häufig SQL - Anfragen an die Datenbank gesendet werden, wobei mehrere
Tabellen durchsucht werden müssen. Das Konzept der materialisierten Sichten unterstützt Access, im Gegensatz zu SQL Server und Oracle, generell
nicht. Im SQL Server handelt es sich bei materialisierten Sichten um indizierten Sichten. Dies bedeutet, daß es lediglich ein geclusterter Index für die
Sicht erstellt wird, wobei diese Sicht eine Reihe an Voraussetzungen erfüllen
muß: Der Einsatz von indizierten Sichten ist nur dann vorteilhaft, wenn die
CREATE UNIQUE CLUSTERED INDEX index_name on view_name(column)
Daten der dieser Sicht zugrunde liegenden Tabellen sich ganz selten ändern.
Der Grund dafür ist, daß der Index nach jeder Änderung der Daten in den
Basistabellen erneut erstellt werden muß. Dies führt beim häufigen Vorkommen zu höheren Kosten und Performance - Verlusten.
Oracle hat bei der Thematik der materialisierten Sichten eine ganz andere Herangehensweise. Die Ergebnisse einer materialisierten Sicht werden
in Oracle tatsächlich „materialisiert“, d.h., in einer eigenständigen Tabelle
gespeichert. Ein einfacher SQL - Befehl für das Erstellen von einer materialisierten Sicht ist wie folgt aufgebaut:
CREATE MATERIALIZED VIEW view_name view_definition
Weiterhin ermöglicht Oracle dem Datenbank - Entwickler die Aktualisierung
der materialisierten Sicht zweierlei zu gestalten. Zum einen wird die materialisierte Sicht nach jeder Änderung komplett neu berechnet (complete refresh).
Zum anderen werden nur die von der Änderung betroffenen Datensätze in
der materialisierten Sicht neu berechnet(fast refresh), was zu Reduzierung
der Berechnungskosten führt.
10
Bei der materialisierten Sicht wird deren Ergebnis physisch gespeichert und muß bei
jeder Aktualisierung erneut berechnet werden.
18
3
Technische Wertpapieranalyse
Dieses Kapitel befaßt sich mit der technischen Analyse, wobei im Abschnitt
3.1 die grundlegenden Begriffe der Wertpapieranalyse eingeführt werden und
das Konzept der technischen Analyse erläutert wird. Dabei werden die wesentlichen Techniken dieser Analyse nämlich die Chart- und Indikatoranalyse
besprochen. Als Hilfsquellen für den ersten Teilabschnitt wurden [20], [21]
und [12] verwendet.
Im Abschnitt 3.2 wird das datenbankgestütztes Technical Indicator Tool
zur regelbasierten Wertpapieranalyse (TInTo) vorgestellt, wobei das notwendige Wissen über die Vorgänger - Diplomarbeiten von Christian Hübel [19]
und von Gereon Schüller [23] übermittelt wird.
3.1
Wertpapieranalyse
Bevor auf die Aspekte der Wertpapieranalyse eingegangen wird, ist es notwendig, einige grundlegende Begriffe der Wertpapieranalyse zu erläutern. Das
Wertpapier ist eine Urkunde, die ein Vermögensrecht verbrieft. Dies bedeutet
also, daß um das Recht, z. B. an einem Unternehmen, geltend zu machen, ist
zumindest der Besitz der Urkunde notwendig.
Unter Wertpapieren versteht man vor allem Aktien, Anleihen, Schuldverschreibungen, Optionsscheine und Investmentzertifikate. Da in dieser Diplomarbeit allgemein von Aktien bzw. Aktienindizes gesprochen wird, wird
weiterer Fokus auf die Begriffe rund um den Aktienbegriff gelegt.
Die Aktie ist als gedrucktes Wertpapier eine Urkunde, die ihrem Inhaber (Aktionär) einen Anteil am Grundkapital einer Aktiengesellschaft und
damit verbundene bestimmte Eigentumsrechte am Unternehmen verbrieft.
Die Aktien kann man auch als das Eigenfinanzierungsinstrument der Aktiengesellschaft verstehen, wobei die Aktionäre einen unmittelbaren Einfluß auf
wirtschaftliche Entwicklung der Aktiengesellschaft haben.
Schon Anfang des 19. Jahrhunderts gab es Überlegungen, ob man die Aktien in bestimmten Gruppen, in sogenannten Aktienindizes, zusammenfassen
sollte, um die wirtschaftliche Situation eines Landes besser zu beurteilen.
Das Aktienindex ist die Zusammenfassung bestimmter Aktien zu einem Index, der die Kursentwicklung des Markts im Zeitablauf angibt.
Am 3. Juli 1884 wurde erstmalig in der Börsengeschichte ein Aktienindex
von Charels Dow, dem Pioneer der technischen Wertpapieranalyse, veröf19
fentlicht. Mittlerweile gibt es eine Vielzahl an Aktienindizes weltweit. Zu den
bekanntesten gehören der Dow Jones (Aktienindex der New Yorker Stock
Exchange, NYSE), der DAX (Deutscher Aktienindex) und NIKKEI (Japanischer Atienindex, Tokio). Die Aktien werden an einer Börse gekauft und
verkauft.
Eine Börse ist ein organisierter Markt, an denen bestimmte Güter (Wertpapiere, Edelmetalle, Devisen, Unternehmensanteile, Kreditverbriefungen und
weitere) gehandelt werden. In Deutschland existieren zur Zeit sieben Börsen:
Berlin - Bremen, Düsseldorf, Hamburg, Hannover, Frankfurt, Stuttgart und
München. Der Punktestand eines Index wird von den im Index enthaltenen
Aktienkursen bestimmt.
Der Aktienkurs gibt den Preis für das Wertpapier wieder, der an der Börse
gehandelt wird. Man kann vier Kursgrössen pro Börsensitzung unterscheiden:
Eröffnungs-, Höchst-, Tiefst- und Schlußkurs. Spricht man von Preis- und Volumendaten, so kategorisiert man diese in End Of Day (EOD) - Daten, also
ein Datensatz pro Tag, und Intraday - Daten. Bei Intraday - Daten werden
die Kursschwankungen einer Aktie innerhalb eines Handelstages dargestellt.
Basierend auf diese Daten und auf die Informationen über den vorherrschenden Trend versuchen die Analysten bestmögliche Entscheidungen über
die bevorstehenden Investitionen zu treffen. Als Trend wird die Neigung eines Markts bezeichnet, sich in eine bestimmte Richtung zu entwickeln.
Es gibt verschiedene Verfahren zur Wertpapieranalyse (auch Aktienanalyse genannt), von denen folgende zwei am gängigsten sind:
• Fundamentale Analyse
• Technische Analyse
Bei der fundamentalen Analyse wird eine Bewertung von Wertpapieren anhand von betriebswirtschaftlichen und volkswirtschaftlichen Einflußfaktoren
vorgenommen. Um den „realistischen“ Preis für das Wertpapier zu bestimmen, werden interne Informationen (z. B. Bilanzkennzahlen) und externe
Informationen des Unternehmens (z. B. Auftragslage oder Gewinnerwartungen) herangezogen.
Der Ansatz der technischen Analyse unterscheidet sich wesentlich von
dem fundamentalen. Hier wird angenommen, daß der Markt immer recht
hat und der Preis des Wertpapiers durch das Angebot und die Nachfrage
auf dem Markt bestimmt wird. Zusätzlich kann anhand der vergangenen
20
Kursbewegungen die zukünftige Kursenentwicklung vorhergesagt werden.
Da der Gegenstand dieser Diplomarbeit auf die technische Analyse beruht,
wird folglich auf das Konzept der technischen Analyse näher eingegangen.
Um das Wesen der technischen Analyse verstehen zu können, sollte man die
drei grundlengeden Annahmen dieser Analyse kennen:
• Marktbewegungen diskontieren alles.
Damit wird behauptet, daß alle betriebswirtschaftlichen und volkswirtschaftlichen Einflußfaktoren sich sofort in den Wertpapierenkursen widerspiegeln und keine Auswirkungen mehr für die künftige Kursentwicklung haben.
• Kurse bewegen sich in Trend.
Wertpapierkurse bewegen sich grundsätzlich in Trends. Die Anleger
reagieren auf die Richtungswechsel der Trends, sobald anhand der vergangenen Kursverläufe ein überzeugender Anhaltspunkt dafür bestimmt
wird.
• Die Geschichte wiederholt sich.
Dies war die Schlußfolgerung von Charles Dow, der der erste Börsenbeobachter war. Durch das Studieren der vergangenen Kursentwicklungen
wurde festgestellt, daß die Wertpapierkurse unter ähnlichen Umständen ein ähnliches Grundmuster aufweisen. Dieses Grundmuster ist auf
die bullsche (Kauf) und bärische (Verkauf) Psychologie des Marktes
zurückzuführen.
Basierend auf diese Grundannahmen wurden im Laufe der Jahrzehnte mehrere umfangreiche Methoden und Techniken der technischen Analyse entwickelt. Zu den meist verbreiteten Analyseverfahren gehören die Chart - und
die Indikatoren - Analyse.
Das Grundprinzip der Chart - Analyse ist es, auf Basis der historischen
Kursentwicklungen mit Hilfe von grafischen Darstellungen, den sogenannten
Charts, Aussage über die zukünftige Kursentwicklung zu treffen.
Die Indikatorenanalyse beschäftigt sich mit den statistischen Modellen
historischer Zahlen- bzw. Kursreihen.
Beide Analyseverfahren führen zum erwünschten Ziel, nämlich einen Trend
zu bestimmen und in diesem die richtigen Kauf- und Verkaufsignale zu identifizieren. Es ist schließlich den Vorlieben der Analysten überlassen, ob eine
oder die Kombination der beiden Analyseverfahren bevorzugt wird.
Wie schon oben erwähnt wurde, verfügt die technische Analyse über eine
Vielzahl von Analyseverfahren. Da aber für diese Diplomarbeit nur die Chart21
und Indikatorenanalyse von Bedeutung sind, wird auf diese beiden Techniken
in den folgenden Abschnitten 3.1.1 und 3.1.2 näher eingegangen.
3.1.1
Chart - Analyse
Die Chart - Analyse ist die älteste Methode der technischen Analyse. Basierend auf der zweiten Grundannahme, daß die Kurse sich in Trends bewegen,
wird mittels der Charts versucht diese Trends zu bestimmen. Die Charts sind
in der Regel zweidimensionale Diagramme, wobei auf der Abzisse der Zeithorizont und auf der Ordinate die beobachtete Kurshöhe abgetragen werden.
Zu den meist verbreiteten Chartformen gehören (Abb. 3)
• Linienchart
• Barchart
• Candelstick - Chart
Der Linienchart ist die einfachste Form des Charts. Hier werden lediglich die
Kurse am Ende von definierter Zeitspanne (z. B. der Börsentag) in die Grafik
eingetragen und durch eine Linie verbunden.
Bei dem Barchart handelt es sich um die erweiterte Darstellung des Liniencharts. Bei dieser Form werden auf der senkrechten Linie pro Beobachtungsraum die Höchst- , Tiefst-, Eröffnungs- und Schlusskurse abgebildet,
wobei die Höhe dieser Linie die Differenz zwischen dem Höchst- und dem
Tiefstkurs ist. Der Eröffnungskurs wird durch eine waagerechte Linie links
und der Schlußkurs rechts repräsentiert.
Der Candelstick - Chart ähnelt dem Barchart. Zusätzlich besitzt die senkrechte Linie einen Rechteck, der unterschiedliche Färbungen annehmen kann.
Dieser Rechteck wird rot angefärbt, wenn der Eröffnungskurs höher als der
Schlußkurs ist. Das Rechteck enthält die grüne Farbe, wenn der Eröffnungskurs unter dem Schlußkurs liegt.
Durch die Untersuchung der Kurvenverläufe und Verlaufsformationen von
Charts werden Schlußfolgerungen über zukünftige Kursenentwicklungen vorgewonnen. Ein Chartist versucht stets die Trendumkehrpunkte zu erkennen,
um dann in Richtung des Trends handeln zu können. Dabei stehen dem
Chartisten zwei Techniken der Chart - Analyse zu Verfügung:
• Trendanalyse
• Formationsanalyse
22
Abbildung 3: Beispiele
c)Candelstick - Chart
für
Chartformen:
23
a)Linienchart
b)Barchart
Abbildung 4: Möglichkeiten der Trendentwicklungen: a)Aufwärtstrend
b)Abwärtstrend c)Seitwärtstrend
Die Trendanalyse stellt den wesentlichen Aspekt der technischen Analyse
dar. Das Ziel dieser Analyse ist es, die Richtung der Trends möglichst früh zu
erkennen, damit die Anleger möglichst lange dieser Richtung folgen können
und entsprechend ihren Profit daraus ziehen können. Hierbei werden drei
Möglichkeiten der Trendentwicklung unterschieden (Abb. 4):
• Ein Aufwärtstrend liegt dann vor, wenn die neue Hochpunkte und Tiefpunkte über den letzten Hochpunkten bzw. Tiefpunkten liegen.
• Der Abwärtstrend läßt sich hingegen als eine fallende Tief- und Hochpunktreihen kennzeichnen.
• Im Gegensatz zu den obigen zwei Trendentwicklungen, weist der Markt
beim Seitwärtstrend keine oder geringe Kursschwankungen auf.
Die Formationsanalyse beschäftigt sich mit der Herleitung der bestimmten
Chartmustern, die einem den „optimalen“ Zeitpunkt für Kauf und Verkauf
zu identifizieren helfen. Die Formationsanalyse wird in zwei Kategorien untergliedert:
• Die Trendbestätigungsformationen, wie der Name schon sagt, „bestätigen“ diese Formationen den Trend. Hier entwickeln sich die Kurse
seitwärts oder leicht gegen die Trendrichtung.
• Während die Trendbestätigungsformationen einen Trend „bestätigen“,
deuten die Trendwendeformationen auf das Auslaufen eines Trends hin.
24
3.1.2
Technische Indikatoren
Ein weiteres bedeutendes Teilgebiet der technischen Analyse stellt die Indikatoren - Analyse dar. Die technische Analyse befaßt sich auch mit den statistischen Verfahren, um verschiedene Aussagen über die Kursbewegungen der
Aktien zu treffen. Bei diesen Verfahren handelt es sich um mathematische
Formeln bzw. Funktionen, die man als technische Indikatoren bezeichnet.
Allgemein lassen sich die technischen Indikatoren in fünf Gruppen klassifizieren [20]:
• Trendfolgerindikatoren
• Oszillatoren
• Trendintensitätsindikatoren
• Umsatzindikatoren
• Volatilitätsindikatoren
Die Kursentwicklungen, wie schon im vorherigen Kapitel erwähnt wurde, unterliegen Aufwärts-, Abwärts- und Seitwärtstrends. Die Trendfolgerindikatoren „folgen“ dem Trend und zeigen solange eine Trendphase an, bis ein Richtungswechsel stattgefunden hat. Dies hat zur Konsequenz, daß die Kauf- bzw.
Verkaufssignale erst dann ausgelöst werden können, wenn die neue Trendphase schon seit einer Weile präsent ist. Die Trendfolger haben also eine zeitverzögerte Reaktion auf eine Trendveränderung und können zu Fehlprognosen
beim Seitwärtstrend führen.
Zu der Gruppe der Trendfolgeindikatoren gehört das „Moving Average
Convergence / Divergence (MACD)“. Der „MACD“ - Indikator basiert zum
einen auf einen „Moving Average (Gleitende Durchschnitt)“, zum anderen auf
deren Gegenüberstellung, also der Phase der Convergenz und der Divergenz.
Die „MACD“ - Linie berechnet sich aus der Differenz zweier exponentieller
„Moving Averages (EMA)“ in einem Beobachtungszeitraum. Die Signallinie
(„Trigger“) ergibt sich durch das Anwenden von exponentiellen „Moving Average“ auf die „MACD“ - Kurve.
M ACDt = EM A1t − EM A2t ,
wobei
25
EM A1t = EM Ax (Closet )
= EM At−1 + (( x2 + 1)∗ (Closet − EM At−1 ))
EM A2t = EM Ay (Closet )
= EM At−1 + (( y2 + 1)∗ (Closet − EM At−1 ))
T riggert = EM Az (M ACDt )
= EM At−1 + (( z2 + 1)∗ (M ACDt − EM At−1 ))
und t, x, y, z die Berechnungszeiträume sind. Sofern die „MACD“ - Kurve
die Signallinie von oben/unten nach unten/oben schneidet, ist ein Verkaufsbzw. Kaufsignal gegeben.
Der aus der Physik stammende Begriff Oszillation ist als regelmäßiges
Hin- und Herschwingen zu interpretieren. Tatsächlich schwingt die Trendlinie eines Oszillators innerhalb einer oberen und einer unteren horizontalen
Begrenzung. Ziel der Oszillatoren, im Gegensatz zu den Trendfolgerindikatoren, ist die frühzeitige Verdeutlichung der Extremphasen im Kursverlauf
(d.h. übertriebene Kursgewinne bzw. -verluste). Gerade bei den Seitwärtstrends sind die Oszillatoren nützlich.
Ein solcher Indikator ist das „Momentum“. Dieser mißt die Geschwindigkeit bzw. die Stärke von Kursbewegungen. Man erhält das „Momentum“,
indem man fortlaufend Kursdifferenzen für ein Beobachtungszeitraum bildet.
M omentum = Closet − Closet−n+1
Alternativ kann dieser Indikator durch eine Quotientenbildung von aktuellem
Schlußkurs und dem Schlußkurs von n Tagen und anschließend einer Multiplikation mit dem Faktor 100, womit dort der Mittelpunkt der Schwankungen
liegt, berechnet werden.
M omentum =
Closet
∗ 100
Closet−n+1
Durchkreuzt die Indikatorlinie die Mittellinie von unten nach oben, so ist
diese Kursentwicklung als Kaufsignal zu interpretieren. Im umgekehrten Fall
deutet diese auf das Verkaufsignal. Befindet sich die Indikatorlinie oberhalb
bzw. unterhalb der Mittellinie und steigt bzw. fällt, so herrscht ein Aufwärtstrend der Kursenentwicklung.
Die Trendintensitätsindikatoren, auch Trendbestimmungsindikatoren genannt, beschäftigen sich mit der Frage, wann ein Trend vorliegt und wann
26
nicht. Diese dienen also zur Identifikation von Trendphasen und unterstützen
bei der Entscheidung, welchen Indikatortyp man anwenden soll.
Als Beispiel für ein Trendintensitätsindikator sei der „Average Directional
Movement Index (ADX)“ gegeben. Der „ADX“ - Indikator zeigt an, ob es sich
um einen Aufwärts-, Abwärts- oder Seitwärtstrend handelt. Die Berechnung
des „ADX“ läuft in mehreren Schritten ab:
1. Berechnung des „Aufwärts-Direction Movement (+DM )“ und des „AbwärtsDirection Movement (−DM )“:
Lowt−1 − Lowt , falls Lowt > Lowt−1
−DMt =
0 sonst
Hight − Hight−1 , falls Hight > Hight−1
+DMt =
0 sonst
2. Ermittlung der „True Range (TR)“:

Hight − Lowt ,

T Rt = max Hight − Closet−1 ,

Lowt − Closet−1
3. Berechnung der beiden „Directional Indikator (+/ − DI)":
+DI = +DM/T R
−DI = −DM/T R
4. Glättung der beiden Indikatoren (+/ − DI):
+DIx = +DMx /T Rx
−DIx = −DMx /T Rx
5. Berechnung des „Direction Movement Index“:
DM I =
(+DI) − (−DI)
((+DI) + (−DI))∗ 100
6. Durch Glättung des „DMI“ ergibt sich der „ADX“ - Indikator:
ADX = DM Ix
27
Liegt „+DI“ über/unter „−DI“, so deutet der „ADX“ - Indikator auf eine
Kursentwickung im Aufwärts- bzw. im Abwärtstrend.
Die Wirtschaftsgröße Umsatz bzw. Volumen ist von zentraler Bedeutung
in der technischen Analyse. Es ist allgemein schwierig ohne Volumeninformationen ein Urteil über die Kursbewegung zu fällen. Die Aufgabe der Umsatzindikatoren ist es die Volumentrends und den Volumentrendwechsel zu
identifizieren. Diese Indikatoren werden entweder allein oder im Zusammenhang mit anderen Indikatoren eingesetzt, um Kauf- bzw. Verkaufssignale zu
bestimmen.
Mittels der Volatilitätsindikatoren können Aussagen über die Beweglichkeit der Kurse getroffen werden, wobei die Trendrichtung unbekannt bleibt.
Diese Indikatoren sind in der Lage die Trendausläufe zu identifizieren, so daß
höhere Gewinneinnahmen erzielt werden können.
Trotz der Klassifizierung der Indikatoren in diese fünf Gruppen, kommt
es öfters vor, daß einem Indikator mehrere Gruppen zugeordnet werden kann.
Als Beispiel sei an dieser Stelle der Umsatztindikator erwähnt, der ebenso als
Oszillator, wie als Trendfolger ausgerichtet sein kann.
28
3.2
TInTo - Das Technical Indicator Tool
Das Technical Indicator Tool (TInTo) ist ein Werkzeug zur technischen Analyse von Wertpapieren. TInTo ist eine Access - Anwendung, welche erstmalig
von Christian Hübel in Rahmen seiner Diplomarbeit [19] entwickelt wurde.
In der ersten Version lag der Schwerpunkt auf der Wertpapieranalyse auf der
Basis der EOF - Kursdaten. Die Intraday - Analyse wurde in einer späteren
Weiterentwicklung des TInTo - Systems von Gereon Schüller [23] implementiert.
Mit dieser Arbeit vor allem die Kernfunktionalitäten der ersten Version
in Form einer Webanwendung neu implementiert. Daher wird im Folgenden
ein Einblick in die Softwarearchitektur und das Datenbankschema der ersten
Version gegeben.
Abbildung 5: TInTo - das Hauptformular.
Zu den Kernfunktionalitäten der ersten Tinto - Version gehören:
• Anbindung der externen ChartDirector - Komponente11 [3] und zur
11
ChartDirector ist ein Produkt der Firma Advanced Software Engineering. Es wird zur
Darstellung von Finanz - Charts benötigt.
29
Verfügungstellung der Chart - Diagramme und vordefinierten Indikatoren für die technischen Analyse.
• Chart - Einstellungen wie Diagramm - Ansicht, Preis - Band, Volumenbalken oder logarithmische Skalierung für die technische Analyse.
• Indikatoren - und Chart - Analyse der in der Datenbank gespeicherten
Wertpapiere.
• Abfrage der EOF - Kursdaten und der Umsatzdaten für ein ausgewähltes Wertpapier vom Yahoo - Webservice.
• Anlegen, Bearbeiten und Löschen von in SQL definierten Indikatoren.
In Abbildung 5 ist das Hauptformular der Anwendung abgebildet, in welchem die Analyse eines ausgewählten Wertpapier vorgenommen werden kann.
Diverse Analyse - Einstellungen wie Diagramm - Ansicht, Preis - Band, Auswahl des ChartDirector - und des TInTo - Indikators können im gleichen
Formular vorgenommen werden.
3.2.1
Softwarearchitektur
TInTo ist eine Access - Anwendung, welche auf einem lokalen Rechner auszuführen und von einzelnen einem Benutzer zu bedienen ist. Zu den wesentlichen Komponenten des TInTo - gehören:
• Internet - Schnittstelle: Diese Komponente implementiert eine Schnittstelle zum Yahoo - Finanzportal, mit welcher die benötigten Kurs und Umsatzdaten abgefragt werden können. Vom Yahoo - Finanzportal wird hierzu eine CSV - Datei12 zur Verfügung gestellt.
• DB-Interface (Jet): Diese Komponente fungiert als Brücke zwischen der
Anwendung und der Datenbank, in der die Speicherung und Verwaltung der Kurs - und Umsatzdaten sowie die Definition der technischen
Indikatoren vorgenommen wird.
• TInTo: Mit dieser Komponente wird die Hauptkomponente der Anwendung bezeichnet, welche alle übrigen Komponente steuert.
• Chart Manager : In dieser Komponente findet die Übernahme der Chart
- Einstellungen in die Berechnung der Kurs - und Umsatzdaten statt.
12
Das Dateiformat CSV (Comma Separated Value) ist eine Textdatei zur Speicherung
oder zum Austausch einfach strukturierter Daten
30
• ChartDirector Visualisierung: Diese Komponente setzt die Anbindung
zum ChartDirector um.
• Benutzerschnittstelle: Diese Komponente besteht aus Access - Formularen, über die der Benutzer die Anwendung bedienen kann.
Auf die weitere Beschreibung der Softwarearchitekur wird an dieser Stelle
verzichtet, da diese in der Diplomarbeit von Christian Hübel ausführlich
dargelegt wird.
3.2.2
Datenbankschema
Das Datenbankschema des TInTo - System besteht im Wesentlichen aus drei
festgelegten Tabellen:
TWertpapier :
{ID:AutoWert, Symbol:Text, Typ:Zahl, Name:Text,
ISIN:Text, WKN:Text }
In Tabelle TWertpapier werden Informationen zu den Wertpapieren gehalten. Jedes Wertpapier ist durch seine WKN 13 bzw. ISIN 14 eindeutig identifizierbar. Zusätzlich bekommt jedes Wertpapier eine fortlaufende Nummer
(ID), anhand der die Beziehung zwischen dem Wertpapier und seinen Kursund Umsatztdaten hergestellt wird.
TKurs:
{ Id:Zahl, n:Zahl, Date:Datum/Uhrzeit, Open:Zahl,
High:Zahl, Low:Zahl, Close:Zahl, Vol:Zahl, v1:Zahl,
v2:Zahl, v3:Zahl }
In der Tabelle TKurs werden die Kurs - und Umsatzdaten eines Wertpapiers für einen Handelstag abgespeichert. Die Werte in der Spalte ID verweisen auf das in der Tabelle TWertpapier gespeicherte Wertpapier. Die Spalte
Date gibt das Datum des Handelstages an, während in der Spalte n die
Anzahl der bis zu diesem Datum stattgefundenen Handelstage festgehalten
werden. Die Spalten v1, v2 und v3 werden für die rekursive Berechnung des
MACD - Indikators benötigt. Das hierfür erarbeitete Verfahren kann in der
Diplomarbeit von Christian Hübel [19] nachgelesen werden.
Die Tabelle TView beinhaltet alle für die Berechnung und Anzeige eines
Indikators notwendigen Informationen. Die Spalte Priority gibt die Anzeige 13
Im deutschen Wertpapierhandel wurden Wertpapiere bis zum Jahre 2003 über die
sechsstellige Wertpapierkennummer (WKN) identifiziert.
14
ISIN (International Securities Identification Number) wird weltweit zur Identifikation
eines Wertpapiers verwendet.
31
TView :
{Priority:Zahl, Name:Text, Caption:Text, SQL:Memo,
IName1:Text, IName2:Text, IName3:Text, ICol1:Zahl,
ICol2:Zahl, ICol3:Zahl, IPar1:Zahl, IPar2:Zahl,
IPar3:Zahl, Notes:Text}
Priorität des Indikators im Auswahlmenu des TInTo - Hauptformulars. In der
Spalte SQL wird die SQL - Definition des Indikators gespeichert. Jeder Indikator bekommt einen kurzen Namen (Spalte Name) und einen vollständigen
Namen (Spalte Caption). Da ein Indikator unter Umständen aus maximal
drei Kurven bestehen kann, werden die notwendigen Informationen für diese Kurven in den Spalten IName1, IName2, IName3, ICol1, ICol2, ICol3,
IPar1, IPar2, IPar3 angelegt, wobei unter IColX die Farb - Informationen
und unter IParX für Darstellungsparameter gespeichert werden.
Die Beziehung zwischen diesen Datenbank - Objekten zeigt das folgende
Entity - Relation - Diagram.
Abbildung 6: Die Beziehungen zwischen den Datenbank - Objekten
32
4
Webbasierte Anwendung
Eine webbasierte Anwendung ist eine Software, welche auf einem Webserver
ausgeführt wird und vom Benutzer nur über einen Internet - Browser15 bedient werden kann. Der Benutzer gibt eine Anfrage (URL16 ) in den Internet
Browser ein. Dazu startet der Browser eine HTTP17 - Anfrage (engl. Request)
an den Webserver, der ihm als die HTTP - AnHTML (Hypertext Markup
Language) und CSS (Cascading Style Sheet) sind Web - Entwicklungsprachen. Während HTML für das Beschreiben der Struktur der Dokumenten
World Wide Web zuständig ist, bündelt CSS die gestalterischen Elemente
der Web - Dokumente in Stilvorlagen. Durch den Einsatz von CSS wird für
Übersichtlichkeit und bessere Wartung der Web - Dokumente gesorgt.twort
(engl. Response) als HTML - und / oder CSS - Dateien überträgt. Die Abblidung 7 stellt die Struktur einer klassischen webbasierten Anwendung dar,
wobei die Interaktion zwischen dem Server und dem Client veranschaulicht
wird.
Abbildung 7: Klassische webbasierte Anwendung.
Im Folgenden werden für die Realisierung der webbasierten Schnittstelle
für TInTo relevante Technologien im einzelnen beschrieben.
15
Unter einem Internet - Browser versteht man ein Compunter - Programm, das im
Internet Textdateien interpretiert und darstellt.
16
Das URL-Format macht eine eindeutige Bezeichnung aller Dokumente im Internet
möglich, es beschreibt die Adresse eines Dokuments oder Objekts, das von einem WWWBrowser gelesen werden kann.
17
HTTP ist ein allgemeines, statusloses, objektorientiertes Protokoll zur Datenübertragung im Rahmen des World Wide Web (WWW).
33
4.1
Die .NET - Technologie
Mit der .NET - Technologie veröffentlichte Microsoft im Jahr 2002 eine neue,
strategische Plattform für die Entwicklung von Windows basierten Anwendungen. Die Grundlage der .NET - Technologie ist das Internet, was unter
anderem auch die Entwicklung von verteilten Anwendungen ermöglicht. Viele
Konzepte, welche zum Teil bereits in der Java - Welt zur Anwendung kommen, finden sich auch in der .Net - Technologie wieder. Um mit der .NET Plattform arbeiten zu können muss das .NET - Frameworkt installiert werden. Das .NET - Framework wird im Abschnitt 4.1.1 in seiner Gesamtheit
beschrieben wird. Ein wesentlicher Bestandteil des .Net - Frameworks ist die
ADO.Net genannte Komponente für den einheitlichen Zugriff auf (relationale) Datenquellen. Im Abschnitt 4.1.2 wird die ADO.Net - Komponente näher
betrachtet. Im letzten Abschnitt 4.1.3 wird mit dem .NET - Framework eingeführte Programmiersprache C# vorgestellt. Das ganze Kapitel 4.1 beruht
auf den zwei Hilfsquellen [17] und [18].
4.1.1
Das .NET - Framework
Das .NET - Framework ist der technische Kern der .NET - Technologie. Für
den Softwareentwickler stellt sich das .Net - Framework als eine Programmierplattform zum Erstellen, Bereitstellen und Ausführen von webbasierten
Awendungen (Active Server Pages), Windows - Anwendungen (Konsole, WinForms) und XML - WebServices dar.
Betrachtet man die Architektur des .NET - Frameworks (siehe Abbildung
8), so läßt sich dieses in einzelne, zum Teil aufeinander aufbauende Schichten
unterteilen. Die beiden Kernkomponenten sind
• Common Language Runtime
• Framework Class Library
Das Konzept einer virtuellen Maschine und einem darauf ausführbaren MaschinenCode (Sprache) ist bereits aus der Java - Welt bekannt. Der sogenannten
Java Byte - Code wird auf der Java Virtual Maschine (JVM) zur Ausführung gebracht. Dieser Zwischencode wird zuvor aus dem in der Java - Syntax
formulierten Programmcode durch einen Compiler erzeugt. Das Äquivalent
zur JVM in der .Net - Welt ist die Common Language Runtime (CLR),
anstelle des Java Byte - Code werden die Programme in die sogenannte
Common Intermediate Language (CIL) überführt. Die Aufgaben der CLR -
34
Laufzeitumgebung umfassen die Schwerpunkte Sprachintegration, Automatische Speicherbereinigung (Garbage Collection), Prozeß - und Threadverwaltung, Durchsetzung von Sicherheitsrichtlinien bei der Code - Ausführung
und Quellcode - Versionisierung.
Ein wesentlicher Unterschied zur Java - Welt liegt in der Unterstützung
unterschiedlicher Programmiersprachen zur Formulierung von .Net - Programmen. Diese Flexibilität wird durch ein einheitliches Typ - System (Common Type System CTS) und spezifische, an die jeweilige Programmiersprache
angepasst Compiler erreicht, welche die in der ausgewählten Programmiersprache formulierten .Net - Programme in die CIL überführen. Die Sprachspezifikation der CIL, welche die Compiler implementieren müssen, ist in der
Common Language Specification (CLS) definiert. Seit der ersten Veröffentlichung des .Net - Frameworks sind neben den von Microsoft mitgelieferten,
CLS - komformen .Net - Sprache VB.Net, C#, J# und C++.Net vielzählige
Projekte zur Integration weiterer Programmiersprachen in die .Net- Umgebung entstanden.
.NET FRAMEWORK
VB
C++
...
C#
JScript
J#
Common Language Infrastructure
Technologien
ASP.NET
WEB SERVICES
WinForm
...
.NET Klassenbibliothek
ADO.NET
XML
RegExp
...
Basisklassen
Datenmodelle
MultiThread
IO
...
Common Language Runtime
Abbildung 8: Komponenten des .NET - Frameworks.
Die zweite Kernkomponente des .NET - Frameworks besteht aus einer
umfangreichen Klassenbibliothek, der sogenannten Framework Class Library
(FCL). Diese beinhaltet Klassen, Schnittstellen und Werttypen. Durch eine
konsequente Unterstützung der CLS - kompatiblen Typen innerhalb der FCL,
35
kann diese von allen CLS - komformen Sprachen verwendet werden. Die Typen implementieren Funktionalitäten wie Darstellung von Basisdatentypen
und -ausnahmen, Kapseln von Datenstrukturen, E/A - Operationen, Aufrufen von .NET Framework - Sicherheitsüberprüfungen, Datenzugriff und
weitere.
Die einzelnen Bestandteile der FCL sind entsprechend ihren Funktionen
in unterschiedliche Namensräume unterteilt. Die Benennungskonvention folgt
einer Punktsyntax, welche zum Aufbau einer hierarchischen Struktur verwendet wird. Der erste Teil eines solchen Bezeichnung bis zum letzten Punkt
stellt den Namen des Namespace, die Bezeichnung hinter dem letzten Punkt
den Namen des Typs dar.
Teile der FCL kapseln die vom Microsoft Windows Betriebssystem bereitgestellten Programmierschnittstellen (Windows Application Programming
Interface). Ein Beispiel hierfür sind die im Namespace System.Windows.Forms
vorliegenden grafischen Steuerelemente. Zur Zeichnung der grafischen Elemente, wie bspw. eines Fensters, werden die internen Windows-Schnittstellen
verwenden.
Aufbauend auf CLR und FCL existieren innerhalb des .Net-Frameworks
zur Unterstützung verschiedener Softwarearchitekturen bzw. Umgebungen
verschiedene Technologien. Die Entwicklung von webbasierten Anwendungen wird beispielsweise durch Klassen unterstützt, welche auch unter dem
Namen ASP.Net subsummiert werden. Weitere Technologien betreffen die
Entwicklung von Webservices, Konsolenanwendung (ohne GUI) und sogenannten WinForms-Anwendung.
Für die Entwicklung von .Net-Anwendungen eignet sich als integrierte
Entwicklungsumgebung (engl. integrated developmente environment IDE)
vorzugsweise das ebenfalls von Microsoft erhältliche, jedoch kostenpflichtige,
Visual-Studio.Net. Als kostenfrei Alternative sei an dieser Stelle auf SharpDevelop18 hingewiesen.
4.1.2
Zugriff auf Datenquellen mit ADO.NET
Mit der Einführung der .NET-Plattform wurde zugleich eine neue und komfortablere Weise der Datenbeschaffung und Datenaufbereitung zur Verfügung
gestellt. ADO.NET stellt Klassen und Schnittstellen zur Verfügung, welche
18
http://www.icsharpcode.net/OpenSource/SD/
36
einen einheitlichen und performanten Zugriff auf vielfältige Datenquellen,
insbesondere relationale Datenbanksysteme (RDBS) und XML-Daten, gewährleisten sollen.
Die Vererbung des Namens der Vorgängertechnologie, Active-Data-Objects,
suggeriert ein Ähnlichkeit beider Technologien, welche sich bei der näherer
Betrachtung jedoch nicht bestätigt. ADO.Net ist ein von Grund auf neuer, objektorientierter Ansatz für den Zugriff auf Datenquellen. In diesem
Abschnitt wird die ADO.Net Technologie und das damit umgesetzte Konzept des einheitlichen Datenquellenzugriffs beschrieben. Die Grundlage für
die Beschreibung einzelner Schnittstellen und Klassen bildet dabei das .NetFramework 1.1, da sich hinsichtlich der Prinzipien und Funktionsweisen in
der Version 2.0 keine wesentlichen Änderungen ergeben haben.
Innerhalb des .Net-Frameworks bezeichnet ADO.Net (Active Data Objects.Net) die Komponente für den einheitlichen Zugriff auf unterschiedliche
Datenquellen, insbesondere jedoch relationale Datenbankmangementsysteme
und XML-Daten. Der Verbindungsaufbau zu einem relationalen DBMS geht
einher mit der Belegung von Resourcen. Neben der Nutzung vorhandener
Netzwekkapazitäten müssen sowohl Client-seitig als auch Server-seitig Informationen zur Verwaltung die Verbindungen vorgehalten werden. Gemeinsam mit weiteren sessiongebundenen Funktionen wie bspw. dem Caching von
SQL-Anfragen und deren Ergebnissen belegt jede Verbindung Speicherplatz,
so daß die Anzahl der vom Server gleichzeitig handhabbaren Verbindungen
begrenzt ist. Ein weiterer, limitierender Faktor sind ggf. einschränkende Lizenzbestimmungen des Herstellers eines DBMS, die dem Nutzer nur eine
bestimmte Anzahl gleichzeitiger Verbindungen erlauben. Sofern der Anwendungskontext es erlaubt, ist eine Schonung der Resourcen bspw. durch unmittelbare Freigabe der Datenbankverbindung nach erfolgter Nutzung oder
durch die gemeinsame Nutzung einer bestehenden Verbindung (ConnectionPooling) ein sinnvolles Ziel, das es bei der Entwicklung von Datenbankanwendungen zu berücksichtigen gilt.
Als Konsequenz der genannten Anforderungen ist es vorteilhaft, die Datenbeschaffung und Datenhaltung von einander zu trennen. Dies führt zu
einer zweigeteilten Klassenarchitektur, wie man sie in der ADO.NET - Komponente wiederfindet (Abbildung 9) [18]:
• DataSet - Klassen
• .NET - Datenprovider - Klassen.
Die Datenbeschaffung wird von einem .NET - Datenprovider übernommen.
37
Abbildung 9: Überblick über das Zusammenspiel zwischen den ADO.NET Klassen, den Datenquellen und einer .NET - Anwendung. Die dicken Pfeile
imlizieren den Datenstrom. Die dünen Pfeil zeigen wie die Kommunikation
zwischen den einzelnen ADO.NET - Klassen abläuft und wie die der Datenfluß von den ADO.NET-Komponenten geregelt ist.
38
Zu den Hauptkomponenten des .NET - Datenproviders zählen:
• Connection - Komponente, welche die Verbindung zur Datenbank aufbaut und die Transaktionsverwaltung übernimmt
• Command - Komponente verwendet die Connection - Komponente, um
die SQL - Anweisungen oder gespeicherte Prozeduren auszuführen.
• DataReader - Komponente wird von Command - Komponente erzeugt
und mit Ergebnissen der Abfrage befüllt. Bei DataReader - Komponente handelt es sich um einen vorwärts gerichteten und schreibgeschützten
Datensatzleser.
• DataAdapter - Komponente kommuniziert mit DataSet, wobei dieses
mit Daten gefüllt wird und dadrin vorgenommene Daten - Änderungen
mit der Datenquelle abgegliechen werden.
Diese Hauptkomponente des ADO.NET - Providers impementieren eine einheitliche Schnittstelle, mit welcher der Zugriff und die Nutzung beliebiger
(relationaler) Datenquellen abstrahiert wird. Ob kommerzieller Hersteller eines DBS oder Open-Source Projekte (siehe MySQL), durch die Schnittstellendefinitionen wird jeder Interessent in die Lage versetzt, einen eigene, an
das jeweiligen Systeme angepassten Datenprovider entsprechend den Schnittstellendefinitionen zu entwickeln. Programmiert der Softwareentwickler innerhalb seines Quellcodes konsequent gegen die Schnittstellen, so kann das
verwendete DBS theoretisch mit sehr geringem Auffand durch die Nutzung
eines anderen Datenproviders ausgetauscht werden. Seit der Veröffentichung
des .Net-Frameworks sind für eine vielzahl (relationaler) DBMS Datenprovider entwickelt worden, welche den Schnittstellendefinitionen von Microsoft
entsprechen. Die folgende Auflistung stellt lediglich einen Ausschnitt der verfügbaren Datenprovider dar:
• OleDb-Datenprovider (Microsoft)
• ODBC-Datenprovider (Microsoft)
• Sql-Datenprovider (SQL-Server, Microsoft)
• Oracle-Datenprovider (Microsoft)
• Oracle-Datenprovider (ODP.Net, Oracle)
Die verbindungslose Datenhaltung kann über die mächtige DataSet - Klasse erfolgen. Die DataSet - Klasse kann als eine Art In-Memory-Datenbank
39
betrachtet werden. Innerhalb einer DataSet - Instanz können mehrere Instanzen der DataTable - Klasse abgelegt werden. Die DataTable Instanzen können
bspw. eine Tabelle innerhalb des DBMS repräsentieren. Bei einer geöffneten
Datenbankverbindung kann die DataSet - Klasse Datenänderungen direkt
an die Datenbank weiterleiten. Neben diesen „online“- Funktionalitäten kann
die DataSet - Klasse die Daten jedoch auch ohne eine Verbindung zur Datenbank sozusagen offline verwalten. Die Zeilen eines DataTable - Objektes
können mittels der DataRow - Klasse, die Spalten mittels der DataColumn Klasse angesprochen werden. Sobald eine DataSet-Instanz mehrere Tabellen
enthält, können zwischen diesen auch Relationen zur Wahrung der Datenintegrität definieren werden. Des weiteren besteht die Möglichkeit, über XML
- Schema Definitionen XML - Daten in ein DataSet - Objekt einzulesen. Auf
die XML - Funktionalitäten soll hier jedoch nicht weiter eingegangen werden.
4.1.3
Programmiersprache C#
C# wurde von Anders Hejlsberg19 entwickelt und von Microsoft im Rahmen
der .NET-Technologie im August 2001 erstmal veröffentlicht. Die in dieser
Diplomarbeit eingesetzte Version C# 2.0 wurde von Microsoft im Jahr 2005
als Bestandteil des .NET-Framework 2.0 und des Visual Studio .NET 2005
veröffentlicht [13].
C# ist eine objektorientierte Programmiersprache, die in ihrer Sprachdefinition als Weiterentwicklung der Programmiersprache C++ dargestellt wird.
Die Benennung der Sprache ist auch nicht zufällig gewählt. Das #-Zeichen
(engl. Cis) kommt aus der Musik - Welt und repräsentiert die Erhöhung des
Notenwertes C um einen Halbton.
Trotz der Zugehörigkeit zur C - Familie, existieren offensichtliche Parallelen zur Java Programmiersprache. Bei der Entwicklung von C# wurden zwei
wesentliche Anforderungen gestellt. Zum einen die Vorteile der Programmiersprachen Java und C++ in einer Sprache zu vereinen. Zum anderen sollte
ein einfacher Umstieg von diesen Sprachen auf C# ermöglicht werden.
Zu den Gemeinsamkeiten zwischen C# und Java zählen unter anderem
die Technik zur automatischen Speicherverwaltung innerhalb des Programms
(Garbage Collection), Unterstützung von Threads20 , Verzicht auf aus C/C++
19
Anders Hejlsberg entwickelte unter anderem die Programmiersprache Turbo Pascal,
später Delphi entwickelt hat.
20
Threads sind eigenständige Aktivitäten in einem Prozeß, die unabhängig von anderen
Prozeßteilen abgewickelt werden [5].
40
bekannte Zeiger sowie Mehrfachvererbung durch Schnittstellen. Zu den Neuerungen in C# zählen Sprachelemente wie
• Eigenschaften (engl. Properties) sind Member21 , die einen flexiblen Mechanismus zum Lesen, Schreiben oder Berechnen von Werten privater
Felder zur Verfügung stellen.
• Mit dem Delegate - Schlüsselwort wird ein Referenztyp deklariert, mit
dem eine benannte oder eine anonyme Methode gekapselt werden kann.
• Indexer ermöglichen das Indizieren von Instanzen einer Klasse oder
Struktur auf dieselbe Weise wie Arrays.
Weiterhin sind neue Datentypen hinzugekommen wie struct - Typen22 , foreach - Schleife, Dezimaltyp, Aufzählungstypen (Enum) und weitere. Mehr zur
den Gemeinsamkeiten und den Unterschieden zwischen C# und Java sind
auf der Microsoft Homepage zu finden [4].
Mit C# als Programmiersprache des .NET - Frameworks können webbasierte Anwendungen, Desktop - und Konsolen - Anwendungen sowie Webservices implementiert werden. Da es in dieser Arbeit um die Entwicklung einer
webbasierten Anwendung in .NET geht, wird der weitere Fokus auf die Entwicklung der webbasierten Anwendung mit C# und den .NET - Framework
gelegt.
ASP.NET trennt die Programmlogik von der Darstellung, wodurch die
Wartbarkeit des Programmcodes verbessert wird. Die Darstellung wird in
einer Datei mit der Erweiterung *.aspx implementiert, die zugehörige Programmlogik in einer sog. CodeBehind - Klasse in einer separaten Datei editiert. Die Erweiterung der CodeBehind - Datei hängt von der eingesetzten Sprache ab. Für C# wird die Datei - Endung *.cs genommen, für die
VB.NET - Klassen ist die Endung *.vb.
Abbildung 10 zeigt den Programmcode für ein einfaches .NET - Web Formular. Abbildung 10.a) stellt die Eingabe - Felder und die Schaltfläche
dar, welche auf der Benutzeroberfläche zu sehen sind. In Abbildung 10.b) ist
der Quellcode der MyForm.aspx - Seite dargestellt. Diese beinhaltet nicht
21
In der objektorientierten Programmierung ist ein Member eine Funktion oder Variable
der Klasse.
22
Bei einem struct - Typ handelt es sich um einen Werttyp, der in der Regel verwendet
wird, um kleine Gruppen von zusammengehörigen Variablen zukapseln, z. B. die Koordinaten eines Rechtsecks.
41
nur HTML - Elemente, sondern auch die ASP.NET Webserver - Steuerelemente. Dies sind ASP.NET - Objekte, die beim Anfordern der ASPX Seite serverseitig ausgeführt werden und Markup zur Anzeige im Internet
- Browser ausgeben. Das Hinzufügen vom runat=“server“ - Attribut in der
Deklaration des Steuerelements ist notwendig, damit das Steuerelement serverseitig verarbeitet wird. ASP.NET stellt eine Vielzahl an Steuerelementen
zur Verfügung, welche von der WebControl Klasse abgeleitet werden. In diesem Beispiel werden die Steuerelemente Page, Label -, TextBox und Button
eingesetzt. Dem .NET - Entwickler wird somit ermöglicht, auch eigene Steuerlemente (sog. benutzerdefinierte Steuerelemente) zu implementieren, mit
individuellen Aussehen und Verhalten. Die benutzerdefinierte Steuerelemente werden ebenfalls von der WebControl Klasse abgeleitet. Die zur ASPX Seite zugehörige CodeBehind - Klasse ist in Abbildung 10.c) zu. Die Referenzierung auf diese Klasse geschieht im Page - Steuerelement in den Attributen
„CodeFile“ und „Inherits“. Die MyForm - Klasse wird von der Page - Klasse
abgeleitet, welche als Namenscontainer für alle Serversteuerelemente auf einer Seite fungiert. Mehr zu webbasierten ASP.NET - Anwendungen ist auf
der Microsoft Homepage [11] zu lesen.
4.2
Die Ajax - Technologie
Ajax ist die Abkürzung von Asyncronous JavaScript23 and XML24 und ist die
Kombination aus diesen länger existierenden Technologien. Bei Ajax handelt
es sich um ein Konzept der asynchronen Datenübertragung zwischen Client
und Server. Dieses Konzept ermöglicht es innerhalb einer HTML - Seite Abfragen an einen Server zu schicken und die Ergebnisse zu empfangen, ohne
die HTML - Seite im Browser komplett neu laden zu müssen. Genauer werden nur die einzelnen Fragmente der HTML - Seite aktualisiert.
In Abbildung 11 ist die Struktur einer webbasierten Anwendung mit Ajax
dargestellt, wobei der Austausch von Seitenfragmenten veranschaulicht wird.
Das Kernstück der Ajax - Technologie ist das JavaScript Objekt XmlHttpRequest, welches von jedem modernen Internet Browser unterstützt wird. Im
Gegensatz zur HTTP - Rundläufe (engl. Roundripts) werden bei XMLHTTP
- Aufrufen zusätzlich XML - Daten ausgetauscht. Die XML - Daten werden
clientseitig per Javascript verpackt und über HTTP übertragen.
23
JavaScript ist eine clientseitige Programmiersprache, die in Speicher des Browsers ausgeführt bzw. interpretiert wird. JavaScript wurde 1995 von Sun und Netscape entwickelt.
24
XML (Extended Markup Language) ist die standardisierte Sprache zur Definition von
individuellen Auszeichnungssprachen (z.B. HTML) mit denen strukturierte Informationen
ausgezeichnet werden.
42
Abbildung 10: Programmcode für ein .NET - Web - Formular.
43
Abbildung 11: Die Struktur der webbasierten Anwendung mit Ajax.
Da die Umsetzung der webbasierten TInTo - Anwendung mit der .NET
- Technologie realisiert wird, ist die von Microsoft bereitgestellte ASP.NET
Ajax Erweiterungen (engl. Extensions) vom besonderen Interesse [1]. Hierbei
handelt es sich um ein kostenloses Framework, mit dem asynchrone Interaktionen zwischen dem Client und Server ermöglicht werden. Zu den Server Komponenten der ASP.NET Ajax Erweiterungen gehören:
• Script Unterstützung
• Webservices
• Application Services
• Server Steuerelemente
Die Script Support - Komponente wird zum einen für die Bereitstellung der
ASP.NET Ajax Bibliothek (engl. Library) und zum anderen für das Rendering der Seitenfragmente benötigt. Mit Hilfe der Webservices - Komponente
wird der clientseitige Aufruf von Web - Services ermöglicht. Die Application Services - Komponente bestehen aus Built - In Webdiensten, welche
wiederum auf in ASP.NET vorhandenen Komponenete wie auf ASP.NET Formular Authentifizierung aufbauen, Benutzer - Rollen und Profile basieren. Die Server Steuerelemente - Komponente wird sowohl clientseitig als
auch serverseitig im Programmcode eingebunden. Da die ersten drei Komponenten, im Gegensatz zur Server Controls - Komponente, in dieser Arbeit
nicht benötigt werden, wird auf die Beschreibung dieser Komponenten nicht
weiter eingegangen.
Zu den meist eingesetzten Server Controls gehören:
44
Abbildung 12: Das Zusammenspiel der Ajax Server - Steuerelemente:
• ScriptManager : Diese verwaltet die Client - Scripts für ASP.NET AJAX - Seiten durch Registrierung des Frameworks. Dies wird für die
Bereitstellung von AJAX - Funktionalität in einer ASP.NET - Seite
benötigt.
• UpdatePanel : Diese ermöglicht das partielle Aktualisieren von ASP.NET
- Seiten. Das zu aktualisierende Seitenfragment wird von dem UpdatePanel - Steuerelement gekapselt. Das UpdatePanel läßt sich in Verbindung mit dem ScriptManager - Steuerelement verwenden.
• UpdateProgress: Ermöglicht das Laden von Statusinformationen, die
sich auf partielle Aktualisierungen von HTML - Seiten beziehen. Diese
sind besonders bei langsamen partiellen Updates hilfreich, damit der
Benutzer eine Rückmeldung über den Fortschritt erhält.
• Timer : Führt asynchrone oder synchrone Postbacks von ASP.NET Seiten in einem definierten Intervall durch. Damit lassen sich auch Bereiche einer Seite aktualisieren, Servercode ausführen oder die ganze
Seite in einem bestimmten Intervall auf den Server laden.
In Abbildung 12 wird das Zusammenspiel der Server - Steuerelemente verdeutlicht. Zuerst wird das serverseitiges Steuerelement Scriptmanager definiert, wobei den Kern von ASP.NET Ajax aktiviert wird. Mit dem Scriptmanager werden alle notwendigen Client - Scripts in der Seite eingebunden. Das
zu aktualisierende Seiten Fragment wird mit dem UpdatePanel - Steuerelement aufgespannt. Im ContentTemplate wird definiert, was im Steuerelement
erscheint, wenn es erstellt wird. Timer verursacht eine automatische Aktualisierung des UpdatePanels. Hierfür wird der Trigger zugeordnet, indem dieser
das Event OnTick des Timers repräsentiert.
45
Es gibt mehrere Gründe die Ajax - Technologie bei der Entwicklung der
Tinto - Webschnittstelle einzusetzen. Mit Ajax sind webbasierten Anwendungen performanter, da nicht bei jeder Benutzerinteraktion die Seiten neu
geladen werden müssen. Des weiteren verwendet Ajax freie Webtechnologien
wie XML und Javascript und ist kostenlos verfügbar. Die Ajax - Technologie hat auch einige Nachteile. Da Ajax auf JavaScript basiert und dieses bei
manchen Internet - Browsern deaktiviert ist, können Ajax - Funktionen in
diesem Fall nicht aufgerufen werden. da die Ajax - Abläufe nicht in der Historie des Internet - Browsers fixiert sind, kann der Benutzer die Funktion des
„Zurück“ - Buttons des Internet - Browsers nicht mehr sicher bedienen. Dies
könnte zu einem inkonsistenten Zustand zwischen der Anzeige im Browser
un der serverseitig verwalteten Sessiondaten führen.
46
5
Entwurf einer webbasierten TInTo - Anwendung
Der Gegenstand dieser Diplomarbeit ist, es eine webbasierte Version des bestehenden TInTo - Systems zu realisieren. Dieses Kapitel befaßt sich mit
der Konzeptionierung der Umsetzung dieses Ziels. Im ersten Abschnitt 5.1
werden die Anforderungen und die Zielsetzungen an das entstehende System aufgezählt und ein entsprechendes Anforderungsprofil erfasst. Im darauf
folgenden Abschnitt 5.2 wird eine Auswahl der für die Realisierung benötigten Werkzeuge bzw. Technologien getroffen und die Umstrukturierung der
Softwarearchitektur beschrieben. Daraus resultierende Änderungen und Erweiterungen am bestehenden Datenbankschema werden im letzten Abschnitt
5.3 aufgeführt.
5.1
Anforderungsprofil und Anwendungsfall
Bei der Konzeptionierung der Umsetzung der webbasierten Version von TInTo sollte dessen Kernfunktionalität in ersten Version [19] übernommen werden. Diese beinhaltet das Anzeigen von Wertpapier - Kursdaten und von
Indikatoren, das Neuanlegen und das Bearbeiten von Indikatoren, die Aufnahme neuer Wertpapiere in die Datenbank, die Abfrage von Wertpapier Kursdaten über den Finanz - Webservice von Yahoo (finance.yahoo.com) und
deren Abspreicherung in der Datenbank.
Eine weitere Anforderung war einen autorisierten Zugriff auf das System
zu gewährleisten. Hierfür soll ein neues Benutzer - Verwaltungsmodul konzepiert und realisiert werden, wobei ein rollenbasierter Zugriff für die System - Benutzung festgelegt werden soll. All diese Anforderungen lassen sich
in einem Anwendungsfalldiagramm25 (siehe Abbildung 13) zusammenfassen,
dessen Haupt - Anwendungsfällen im Folgenden beschrieben werden.
Benutzer Authentifizieren
Bevor ein Benutzer das System bedienen kann, soll dessen Authentifizierung
staatfinden. Dabei werden ein Benutzername und ein Kennwort dem System
übergeben, welches anhand dieser Daten das Zugriffsrecht sowie die Rollen
- Zuordung des Benutzers in der Datenbank abfragt. Mit der Abfrage nach
dem Zugriffsrecht soll festgestellt werden, ob der Benutzer in der System 25
Ein Anwendungsfalldiagramm (engl. use case diagram) ist eine der dreizehn Diagrammarten der Unified Modeling Language (UML), mit welcher sich eine Menge von Aktivitäten eines Systems aus der Sicht seiner Akteure beschreiben lassen.
47
Abbildung 13: TInTo Anwendungsfall.
48
Datenbank vorhanden und nicht gesperrt ist. Mit der Abfrage nach der Rollen
- Zuordnung hingegen soll bestimmt werden, ob es sich um einen Analysten
oder einen Administrator handelt. Aktuell sind im TInTo - System nur diese
zwei Rollen hinterlegt, jedoch die Hinzunahme weiterer Rollen (z.B. Leser Rolle, der nur die Wertpapier Analysieren kann) möglich.
Wertpapier Analysieren
Nach einer erfolgreichen Authentifizierung kann der Benutzer die zuvor eingerichteten Wertpapiere analysieren. Dem Benutzer wird eine breite Palette
an für die Analyse benötigten Einstellungen zur Verfügung gestellt (z.B. die
Festlegung des Zeitraumes, Auswahl der Darstellungsform für die Indikator Kurve). Bei diesem Anwenundgsfall handelt es sich um eine Generalisierung
der Unter - Anwendungsfälle Wertpapier Kursdaten Anzeigen und
Wertpapiere Verwalten
Dieser Anwendungsfall generalisiert die Unter - Anwendungsfälle Wertpapier Entfernen und Wertpapier Bearbeiten, wobei beim letzteren ein weiterer
Wertpapier Neuanlegen vorkommt. Beim Neuanlegen eines Wertpapiers kann
der Benutzer anhand eines Suchsymbols eine Liste übereinstimmender Symbole von Yahoo - Webservice abrufen. Bei der Speicherung des Wertpapiers in
der Datenbank werden gleichzeitig die Kursdaten bis zum aktuellen Datum
beim Yahoo - Webservice abgefragt und in der Datenbank gespeichert. Dieses Verhalten wird im Anwendungsfalldiagramm mittels der include - Pfeils
dargestellt. Will der Benutzer ein bestimmtes Wertpapier aus der Datenbank
entfernen, so werden auch dessen Kursdaten gelöscht.
Indikatoren Verwalten
Dieser Anwendungsfall ist eine Generalisierung, bei welchem die gleichen
Beziehungen zwischen den Unter - Anwendungsfällen Indikator Bearbeiten,
Indikator Neuanlegen und Indikator Entfernen gelten, entsprechend dem Anwendungsfall Wertpapier - Verwalten. Ein Analyst kann eigene Indikatoren
anlegen, bearbeiten und entfernen. Beim beim Entfernen wird überprüft, ob
der zu löschende Indikator von keinem anderen Indikator verwendet wird.
Ein Administrator kann „fremde“ Indikatoren verwalten, wobei dem Analysten nur das Leserecht eingeräumt wird.
Benutzer Verwalten
49
Dieser Anwendungsfall ist nur für Benutzer mit Administratoren - Rolle zulässig. Der Administrator kann Benutzer anlegen und bearbeiten, wobei die
Personen - Daten (Name, Vorname, E-Mail und weitere) erfasst, die Rolle zugeordnet und Zugangsdaten (Benutzername und Kennwort) festgelegt
werden. Beim Löschen eines Benutzers wird überpüft, ob seine Indikatoren
von anderen verwendet werden. Trifft dies zu, kann sein Zugang nur gesprerrt
werden. Andernfalls werden seine Daten sowie seine Indikatoren aus der Datenbank entfernt.
5.2
Neuentwurf der Softwarearchitektur
Die erste Version von TInTo ist eine Access - Anwendung, welche lokal auf
dem Rechner eines Benutzers ausführbar und nur von diesem Benutzer zu
bedienen ist. Ziel ist nun eine webbasierte Version von TInTo zu realisieren,
welche parallel mehrere Benutzer bedienen kann.
Bei der Konzipierung und dem Entwurf der webbasierten Schnittstelle für
TInTo sollte eine Ausschau nach geeigneten Werkzeugen und Technologien
gehalten werden, deren Auswahl dem Autor dieser Diplomarbeit überlassen
wurde. Für die Realisierung dieser datenbankgestützten und webbasierten
Anwendung ist die Microsoft .NET - Technologie gut geeignet. Der Einsatz
dieser Technologie ist zum einen wegen der ADO.NET - Komponente vorteilhaft, welche die Datenbeschaffung von der Datenaufbereitung trennt, somit
zur Verringerung des Datentransfers im Netz und zu einer Verbesserung der
Anwendungs - Performance führt. Zum anderen lassen sich die HTML - Oberfläche und der Programmcode klar trennen, wodurch das Design der Benutzeroberfläche und die eigentliche Programmierung der Logik von einander
unabhängig verändert werden können. Die webbasierte Anwendung wurde
mit dem .NET - Framework 2.0 umgesetzt, als Entwicklungsumgebung wurde das Visual Studio 2005 und die Programmiersprache C# eingesetzt. Bei
der Wahl der Datenbank sollten die Vorteile und die Nachteile der im Kapitel 2.3 vorgestellten Datebanksysteme hervorgehoben und berücksichtigt
werden. Die einzusetzende Datenbank soll folgende Anforderungen erfüllen:
• Performant für den Mehrbenutzerbetrieb: Eine parallele Nutzung der
Anwendung von Mehreren Benutzern sollte zu keinerlei Performance Verlusten führen. Access ist, im Vergleich zu den Datebanksystemen
SQL Server und zur Oracle, hat schwächere Cache - Mechanismen,
sodass diese Anforderung von diesem nicht gewährleistet werden kann.
• Unbeschränkte Kapazität: Im Falle der Intraday - Kursdaten - Analyse, welche von mehreren Benutzern parallel durchgeführt werden kann
50
Abbildung 14: Softwarearchitektur der webbasierten Anwendung für TInTO.
51
und deren Kursdaten auch in der Datenbank gespeichert werden, ist
eine unbeschränkte Kapazität bzgl. der verwalteten Datenmengen der
Datenbank Voraussetzung. Auch hier kommt Access nicht in Frage, da
dessen Datenkapazität bei 2 Gigabyte liegt.
• Unterstützung von materialisierten Sichten: Die Intraday - Analyse
ist ein wichtiger Bestandteil der Wertpapieranalyse. Die datenbankgestützte Intraday - Analyse beruht auf den Konzept der Änderungspropagierung 26 . Hierbei handelt es sich um die sofortige Aktualisierung der
Sichten, sobald eine Änderung in den Basistabellen stattfindet. Da die
Indikatorwerte für die Intraday - Analyse möglichst schnell berechnet
und angezeigt werden müssen, ist es sinnvoll, diese zu materialisieren.
Die Umsetzung der Intraday - Analyse wird in dieser Diplomarbeit
nicht behandelt, für eine spätere Weiterentwicklung der webbasierten
TInTo - Anwendung vorgesehen ist, sollte diese Anforderung bei der
Wahl der Datenbank jedoch erfüllt sein.
Im Kapitel 2.3.4 wurde bereits erwähnt, daß Oracle die materialisierten Sichten und verschiedene Strategien für die Änderungspropagierung unterstützt.
Aufgrund dieser und des zusätzlichen Aspekt, daß Oracle nahezu keine Kapazitäts - Beschränkung besitzt und Mehrbenutzerbetrieb für den ausgelegt
ist, wird Oracle bei der Realisierung der Webschnittstelle für TInTo eingesetzt.
Wie schon in vorherigen Abschnitt angedeutet wurde, werden die Kernfunktionalitäten des bestehenden TInTo in dessen webbasierter Version übernommen. Die TInTo - Basisfunktionalitäten sowie die neue Benutzerverwaltung werden jedoch in einem anderen technischen Umfeld realisiert, was eine
komplette Neuimplementierung der TInTo - Anwendungen erfordert.
Abbildung 14 zeigt die Softwarearchitektur der webbasierten TInTo - Anwendung. Es handelt sich um eine Client - Server - Architektur, wobei sowohl
die Anwendung als auch die Datenbank auf einem Server ausgeführt werden.
Über einen Client - Browser wird die GUI und auf die Programm - Funktionen zugegriffen. Die Anwendung läßt sich in zwei logische Schichten aufteilen:
die Präsenationslogik - und die Programmlogik - Schicht.
Das eigentliche Verhalten des TInTo - Systems wird in der Programmlogik - Schicht abgebildet. Diese koordiniert die Kommunikation zwischen den
26
Die Änderungspropagierung wird ausführlich in der Diplomarbeit von Gereon Schlüller
beschrieben [23].
52
einzelnen System - Komponenten des TInTo, dem Yahoo - Webservice und
der Oracle Datenbank. Zu den TInTo - System - Komponenten gehören:
• Benutzer : diese Komponente deckt die Benutzer - Verwaltung und Authentifizierung ab. Sie regelt die Zuordnung zwischen den System Rollen (Administrator - oder Analyst - Rolle) und den Benutzern.
• Wertpapier : diese Komponente deckt die Wertpapier - Verwaltung ab.
• Indikator : diese Komponente deckt die Indikator - Verwaltung ab.
• Berechnung: in dieser Komponente werden die notwendigen Berechnungen für die Indikator - Werte der ausgewählten Wertpapier vorgenommen. Diese Berechnungen werden an die externe Komponente
ChartDirector zur Visualisierung übergeben.
• Datenbank : diese Komponente sorgt für einen einheitlichen Zugriff der
System - Komponenten auf die Oracle Datenbank.
Die Präsentationslogik - Schicht besteht aus zwei Komponenten:
• Yahoo
• Präsentation
Die Yahoo - Komponente wird benötigt um die Kommunikation zwischen den
Berechnung - Komponente mit dem Yahoo - Webservice zu gewährleisten.
Die vom Yahoo - Webservice angefragten Daten werden als XML - Datei
oder CSV - Datei geliefert. Die Daten werden von der Yahoo - Komponente
aufbereitet und für die weitere Verwendung an die System - Komponenten
übergeben.
Die Präsentation - Komponente ist zur Verbesserung der Übersichtlichkeit in Abbildung 14 als eine Komponente dargestellt. Bei näherer Betrachtung läßt sich diese weiter in mehrerer Unter - Komponenten erkennen (siehe
Abbildung 15)
Die TInTo - GUI stellt mehrere Konsolen zur Verfügung: Wertpapier Analyse, Wertpapier, Indikator und Administration. Jede dieser Konsolen ist als
eine Konsolen - Komponente zu verstehen. Die verschiedenen Konsolen werden über die Navigation - Komponente angesteuert. Jede Konsole besteht
aus entsprechenden Seiten, welche bei der Konsole - Auswahl über die Navigation geladen werden. Diese Seiten werden durch die Seiten - Komponente
verkörpert. Aktionen wie Löschen, Neuanlegen, Speichern, Chart Aktualisieren, Kursdaten laden werden in der Ribbon - Komponente zusammen gefaßt.
Bei dieser Komponente handelt es sich um eine Sammlung von Schaltflächen,
53
Abbildung 15: Die Präsentationslogik - Schicht der webbasierten TInTO Anwendung.
die konsolenspezifisch geladen werden. Für die Kommunikation zwischen den
einzelnen Komponenten sowie der Client - Server - Kommunikation ist die
Ajax - Komponente zuständig. Falls ein Ereignis in einer der Konsolen ausgelöst wird, so wird dieses über die Ajax - Komponente an andere, relevante
Komponente weitergeleitet.
5.3
Erweiterung des Datenbankschemas
Aufgrund der gestellten Anforderungen wie beispielsweise der Benutzerverwaltung ist eine Erweiterung des bestehenden Datenbankschemas notwendig.
Bei dem Neuentwurf der Datenbank wurden unter anderem alle Tabellen und Spalten - Namen einheitlich in Englisch umbennant. Jede Tabelle in der
Datenbank stellt ein Objekt der Anwendung dar und jeder Datensatz eine
Instanz dieses Objektes. Jede Datensatz wird mit fortlaufenden Identifikationsnummer gespeichert.
Die Beziehungen zwischen den Objekten in erweiterten Datenbankschema
lassen sich in zwei Gruppen klassifizieren:
• Wertpapier (Abbildung 16.a)
• Benutzer (Abbildung 16.b)
In der Beziehungsgruppe Wertpapier steht das Entity Wertpapier im Mittelpunkt. Dem Wertpapier werden anhand seiner Identifikationsnummer Kursdaten zugeordent. Ein Wertpapier kann einem einzigen Typ zugeordent werden. In beiden Fällen handelt es sich um eine 1:N - Beziehung, wobei das
Entity mit der N - Kardinalität den Foreign Key des anderen in einer seiner
54
Abbildung 16: Erweitertes Datenbankschema: Beziehungsgruppen.
Attribute enthält.
In der Beziehungsgruppe Benutzer steht das Entity Benutzer im Mittelpunkt. Der Benutzer ist genau einer Benutzergruppe zugeordnet und hat
genaue eine Adresse. Der Benutzer kann jedoch mehrere Indikatoren in der
Datenbank speichern.
Im Folgenden sind die Spalten und deren Werte - Bereiche der einzelnen
Tabellen aufgeführt.
Instrument:
EodQuote:
Type:
UserGroup:
Address:
{instrumentID:integer, typeID:integer, symbol:string,
name:string, isin:string, wkn:string}
{eodquoteID:integer, instrumentID:integer, date:date,
dacount:integer, open:float, high:float, low:float, close:float, volume:integer, volume1:float, volume2:float,
volume3:float}
{typeID:integer, name:string, description:string }
{usergroupID:integer, name:string}
{addressID:integer, street:string, zip:string, city:string,
country:string, email:string }
55
User :
Indicator :
{userID:integer,
usergroupID:integer,
addressID:integer, login:string, password:string, name:string,
firstname:string, active:integer, description:float}
{indicatorID:integer,
userID:integer,
name:string,
shortname:string, priority:integer, shortname1:string,
shortname2:string, shortname3:string, color1:integer,
color2:integer, color3:integer, description:string }
56
6
Ausgewählte Aspekte der Programmierung
Dieses Kapitel soll einen Einblick in die relevanten Aspekte der Programmierung verschaffen. Das Ziel ist, dem Entwickler für die Weiterentwicklung der
webbasierten TInTo - Anwendung das notwendige Wissen zu vermitteln.
6.1
Struktur der webbasierten Anwendung
In diesem Kapitel wird ein Überblick über das Projekt - und die Klassen Struktur der webbasierten Anwendung gegeben. Beim Erstellen einer .NET Anwendung in .NET wird zunächst eine leere Projekt - Mappe (auch solution
genannt) angelegt. Innerhalb dieser Mappe lassen sich mehrere Projekte und
Dateien hinzufügen. Wie im Abschnitt 5.2 erwähnt wurde, ist die Softwarearchitektur der webbasierten TInTO - Anwendung in zwei Schichten aufgeteilt:
in eine Präsentationslogik - und eine Programmlogik - Schicht. Diese Schichten sind als zwei eigenständige .NET - Projekte in der TInTo - Anwendung
realisiert:
• Programmlogik - Schicht: TInTO - Globals - Projekt
• Präsentationslogik - Schicht: TInTO - Web Site - Projekt
In den folgenden Unterabschnitten werden diese Projekte bzw. Schichten im
einzelnen besprochen.
6.1.1
Programmlogik
TInTo - Globals ist ein Class Library - Projekt, in welchem die ganze Programmlogik umgesetzt ist. Diese besteht aus mehreren C# - Klassen27 , welche in unterschiedlichen Namensräumen (engl. Namespaces) gruppiert und in
Projekt - Unter - Ordnern abgelegt sind, welche mit den Namen des Namensraumes übereinstimmen. Der Namensraum für das ganze TInTo - Globals
Projekt lautet Tinto.Globals, welche als Präfix bei den Unter - Namensräumen gesetzt wird (z.B. Tinto.Globals.BusinessObjects). Im Folgenden werden
diese Namensräume im einzelnen besprochen. Auf die ausführliche Beschreibung aller C# - Klassen wird an dieser Stelle verzichtet, da die komplette
Quellcode - Dokumentation als HTML - Hilfe zur Verfügung gestellt wird.
BusinessObjects
27
Alle Klassen - Namen, - Methoden und - Variablen sind in englischer Sprache geschrieben.
57
In diesem Namensraum befinden sich die Klassen, die die Anwendungs - Objekte implementieren. Diese sind Instrument (Wertpapier), Indicator (Indikator), User (Benutzer), UserGroup (Benutzer Gruppe) und Address (Adresse).
Für jedes dieser Objekte wurden drei Klassen angelegt:
• Objekt_Name.cs (z.B. User.cs): deklariert die Felder und die Eigenschaften des Objekts.
• Objekt_NameFactory.cs (z.B. UserFactory.cs): gibt eine neue Instanz
des Objekts zurück.
• Objekt_NameRepository.cs (z.B. UserRepository.cs): lädt die Objekt Daten aus der Datenbank, speichert die Änderungen des Objektes in
der Datenbank oder entfernt das Objekt aus der Datenbank.
Diese Struktur ist an die Modellgetriebene Architektur 28 (MDA) (engl. Model
Driven Architecture) [22] angelegt.
Database
Dieser Namensraum enthält Klassen (DBConnection.cs und DBQueryItem.cs),
welche für die reibungslose Transaktionsabwicklung zwischen den Anwendungs - Objekten und der Datenbank sorgen. Mittels dieser Klassen wird
eine einheitliche Schnittstelle zur Datenbank zur Verfügung gestellt.
Generics
Die zu diesem Namensraum zugehörige Klasse GenericChartDirector.cs stellt
Methoden zur Verfügung, mit deren Hilfe Finanz - Charts dargestellt werden. Dabei werden die Methoden und Klassen des kommerziellen Produkts
ChartDirector benutzt.
WebControls
Ein wesentlicher Aspekt beim Design und der Implementierung der webbasierten TInTo - Anwendung war, eine eventuelle Weiterentwicklung der Anwendung nach Möglichkeit zu vereinfachen. Hierfür wurde der Ansatz der benutzerdefinierten Steuerelemente verwendet, welche sich in der Seite -, Menuund Ribbon Komponente (siehe Abschnitt 5.2) wiederfindt. Die Klassen, die
diese Steuerelemente implementieren, sind in diesem Namensraum erfaßt.
28
Die Model Driven Architecture unterstützt die Erstellung eines Modells, das unabhängig von einer konkreten technischen Plattform ist.
58
Configuration
Die oben erwähnten Steuerelemente lassen sich in der web.config29 - Datei
der Anwendung konfigurieren. Die Klassen, die diese Konfigurationen verarbeiten, sind in Configuration - Namensraum hinterlegt.
6.1.2
Präsentationslogik
Das TInTO - Web Site - Projekt umfaßt die gesamte Präsentationslogik der
TInTo - Anwendung, welche die Struktur der Benutzeroberfläche mit allen
relevanten HTML - und ASPX - Seiten definiert. ASP.NET bietet anwendungsspezifische Ordner und Dateien, mit denen die globale Konfiguration
und Strukturierung des Quellcodes vereinfacht werden.
Die XML - basierten Konfigurationsdateien web.config und mashine.config
bilden das Kernstück jeder ASP.NET - Anwendung, wobei mashine.config
nur einmal mit dem .NET - Framework installiert wird und web.config hingegen für jede Anwendung separat angelegt werden kann. Wird in der Anwendung keine web.config Datei angelegt, so wird die Konfiguration von der
mashine.config an die Anwendung vererbt. In der TInTO - Web Site ist eine
web.config - Datei vorhanden. Es gibt eine Vielzahl an Einstellungen, die in
dieser Datei vorgenommen werden können. Es werden an dieser Stelle nur
die für diese Arbeit relevanten Konfigurations - Einträge beschrieben.
Die web.config - Datei besitzt ein Hauptelement <configuration>, innerhalb dessen weitere Elemente definiert werden können. Eines dieser Elemente
ist <connectionStrings>, in der die Verbindungsdaten zur Oracle Datenbank
abgelegt sind. Die Konfiguration der Anwendungs - Konsolen ist ebenfalls
in der web.config - Datei vorzunehmen (siehe Abbildung 17). Der Entwickler muß im Abschnitt <Tinto> <Globals> <tin_managers> im Element
<defaultmanager > die Standard Konsole festlegen, d.h. diejenige Konsole,
welche beim Starten der Anwendung zuerst geladen wird. Mit dem <add >
- Element werden weitere Konsolen hinzugefügt. In dem <add> - Element
sind folgende Attribute anzugeben:
• manager : Gibt den Namen der Konsole an.
• listurl und editurl : Gibt für jede Konsole die zugehörigen ASPX - Seiten
an.
• group: Gibt die Rollen an, welche Zugriffsrechte auf die Konsole hat.
29
siehe Beschreibung der Präsentationslogik - Schicht
59
Abbildung 17: Programmcode - Fragment aus web.config - Konfigurationsdatei.
60
Weiterhin ist die Sichtbarkeit der Aktions- - Schaltflächen wie „Neuanlegen“,
„Bearbeiten“, „Löschen“, „Chart Aktualisieren“ und „Kursdaten“ Anzeigen für
jede Konsole festzulegen. Hierfür ist das Attribut visibled vorgesehen, wobei
beim false - Wert ist Schaltfläche für die entsprechende Konsole nicht sichtbar und beim true - Wert sichtbar ist.
Bei den Elementen mit dem Präfix <tin* >, handelt es sich um die benutzerdefinierten Steuerelemente, deren Implementierung im Namensraum
WebControls (Abschnitt 6.1.1) liegt. Diese Vorgehesweise vereinfacht eine
spätere Weiterentwicklung, so daß der nachfolgende Entwickler zusätzliche
Konsolen mit neuen Funktionalitäten in wenigen Schritten hinzufügen kann.
In der Ordner - Struktur der webbasierten TInTo - Anwendung sind die
ASP.NET Web Site Ordner
• App_Code
• App_Themes
vorhanden. Die im „App_Code“ - Ordner enthaltene Klasse YahooWebService.cs enthält die CodeBehind - Klasse der YahoomWebService.asmx - Datei30 und implementiert die Webmethoden für den Zugriff auf den Yahoo Webservice. Da die Datei YahooWebService.cs im App_Code - Ordner abgelegt ist, ist deren Assembly für jede andere ASPX - Seite der webbasierten
TInTo - Anwendung zugänglich.
Der Ordner „App_Themes“ beinhaltet alle Dateien (CSS - Dateien und
Bilder), die das Erscheinungsbild der TInTo - Anwendung definieren. Die
CSS - Dateien sind automatisch (d.h. ohne explizite Pfad - Eingabe) für jede
ASPX - Seite sichtbar.
6.2
Umsetzung der Indikatoren in Oracle
Die Indikatoren werden mit der Migration nach Oracle implementiert. Dieses
Kapitel setzt sich mit der Re - Implementierung der Indikatoren auseinander, wobei die Ausführung der Indikatoren in Oracle Datenbank geschieht.
Die Handhabung der Indikatoren in der früheren TInTo - Version [19] konnte
nicht eins zu eins in die webbasierten Version übernommen werden. Hierfür sind zwei Gründe ausschlaggebend. Zum einen die SQL - Definitionen
30
ASP.NET stellt Unterstützung für Webservice durch die ASMX - Datei bereit.
61
der Indikatoren31 in Access basieren auf den SQL92 - Standard und Access
Basic, zum anderen wird vorausgesetzt, daß die Anwendung nur von einem
Benutzter zu bedienen ist. Dies impliziert, daß die Manipulationen der in
den Tabellen gespeicherten Kursdaten nur für die einen einzigen Benutzer
verwaltet werden müssen.
In der webbasierten TInTo - Anwendung hingegen wird Oracle als DBS
eingesetzt, und mit einer sog. 3rd Generation Language 32 (hier mit C#) angesprochen. Ein weiterer Unterschied ist, daß die Manipulation der Kursdaten
parallel für mehrere Benutzer möglich sein soll. In Abschnitt 6.2.1 werden
beispielhaft die im Kontext dieser Arbeit relevanten Unterschiede zwischen
Access - und Oracle - SQL erörtert und allgemeine Richtlinien für die Indikator - Definitionen in der webbasierten Anwendung vorgegeben. Der Aspekt
der parallelen Manipulation von Kursdaten durch mehrere Benutzer wird in
Abschnitt 6.2.2 behandelt.
6.2.1
Umformulierung der Indikatoren - Definition
Oracle entspricht nicht vollständig dem SQL92 - Standard. Das hat zur Folge, daß die in Access beschriebenen Indikator - Definitionen unter Oracle
umformuliert werden müssen. In Tabelle 2 werden einige Unterschiede in
der Schreibweise der Oracle - und Access - SQL - Anweisungen beispielhaft
verdeutlicht.
In fast allen Indikator - Definitionen werden die folgenden Methoden [19]
benötigt:
• spGetID(): liefert die Identifikationsnummer des ausgewählten Wertpapier.
• spGetN(): liefert einen zum aktuell gewählten Anzeigezeitraum passenden Grenzwert zur zeitlichen Einschränkung der Abfrage.
• spGetPar(): dient der Benutzer - Abfrage von notwendigen Parametern.
Diese Methoden werden während der Berechnung der Indikatoren aufgerufen. Bei der letzten Methode spGetPar() müsste während der Indikator - Berechnung eine Interaktion zwischen dem Benutzer und dem TInTo - System
stattfinden, was für die webbasierten TInTo - Anwendung einen zusätzlichen
31
Unter einer Indikator - Definition ist hier eine Formulierung einer Indikator - Formel
in SQL gemeint.
32
Programmiersprachen werden zur Klassifikation in Generationen eingeteilt. Maschinencode repräsentiert die 1. Generation, Assembler die 2. Mit 3rd Generation Language
(3GL) werden „höhere“ Programmiersprachen wie C#, Java bezeichnet.
62
Access
Oracle
Umbennenungen
SELECT
table.column AS colum_renamed
FROM
table
SELECT
tbl_eod.dayclose close
FROM
tbl_eod
Fallunterscheidung
IIF (
table.column1 > table.column2,
table.column1,
table.column2 )
CASE WHEN
table.column1 > table.column2,
THEN table.column1,
ELSE table.column2 END
Aktualisierungs - Anweisung mit Self - Join
UPDATE table
INNER JOIN table AS table1
ON table.column2 = table1.column2
SET table.column = table1.column+1
WHERE table.column > 10
UPDATE table OUTER SET
OUTER.column = INNER.column+1
WHERE OUTER.column > 10
AND OUTER.column2 IN
(SELECT INNER.column2
FROM table INNER)
Tabelle 2: Access - vs. Oracle - SQL.
Roundtrip zwischen Server und Client bedeutet. Diese ungewollte Unterbrechung der Indikator - Berechnung zu vermeiden, werden statt diesen Methoden die Platzhalter (@id, @count, @period([text],[zahl])) verwendet, welche
vor der Berechnung der Indikatoren in der C# Methode GetIndicatorData()
mit den entsprechenden Werten belegt werden.
Im Folgenden soll diese Vorgehensweise am Momentum - Indikator (siehe
Kapitel 3.1.2) veranschaulicht werden. In Tabelle 3 ist die Definition des ADX
gegeben. Die Definition wird in der Methode GetIndicatorData() analysiert
und der Parameter @id mit der Identifikationsnummer des ausgewählten
Wertpapiers und der Parameter @count wird mit einem Rückgabewert der
Methode GetMaxcount() belegt.
Der Platzhalter @period(’Kurseinheiten’,10) wird gesondert behandelt.
Sobald die Auswahl eines Indikators getroffen ist, wird in dessen Definition nach dem Platzhalter @period([text],[Zahl]) gesucht. Ist diese vorhanden,
so werden zusätzliche Eingabe - Felder eingeblendet. An dieser Stelle wird
die Ajax - Technologie dazu verwendet, um nur das Seitenfragment zu aktualisieren bzw. anzuzeigen, welches dieser Eingabe - Felder beinhaltet. Ein
63
Neuaufbau der gesamten Seite ist somit nicht notwendig (Kapitel 4.2). Auf
diese Weise hat der Benutzer die Möglichkeit die Parameter - Werte anzupassen, bevor das TInTo - System mit der Berechnung des Indikators startet
(siehe Abbildung 18).
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
tbl_eod.instrumentID, tbl_eod.daycount,
tbl_eod.day, tbl_eod.dayhigh, tbl_eod.daylow,
tbl_eod.dayopen, tbl_eod.dayclose,
tbl_eod.volume, tbl_eod.dayclose - tbl_eod1.dayclose AS Ind1
FROM tbl_eod INNER JOIN tbl_eod tbl_eod1
ON (tbl_eod.ID=tbl_eod1.ID)
WHERE
tbl_eod.instrumentID = @id AND
tbl_eod.daycount > @count AND
tbl_eod1.n = tbl_eod.n - @period(’Kurseinheiten’,10)
ORDER BY
tbl_eod.instrumentID DESC, tbl_eod.day DESC
Tabelle 3: Formulierung der Formel des Momentum - Indikators in SQL.
Abbildung 18: Anpassung der Period - Parameter in der Indikator - Definition. Links vor der Auswahl des Momentum - Indikators. Rechts nach der
Auswahl.
6.2.2
Ausführung der Indikatoren
Bei der Ausführung der Indikatoren werden die Kursdaten für ein ausgewähltes Wertpapier in der Tabelle verändert und gespeichert. Es kann sich bei der
Speicherung um eine UPDATE - Anweisung wie beim MACD - Indikator [19]
oder um die Speicherung von Zwischenergebnissen wie beim ADX - Indikator
(siehe Kapitel 3.1.2) handeln. Da bei der webbasierten TInTo - Anwendung
die Indikatoren - Berechnung parallel von mehreren Benutzern gewährleistet werden soll, ist hierfür ein entsprechender Mechanismus einzusetzen. An
64
der Berechnung des ADX - Indikators soll dieses Mechanismus veranschaulicht werden (siehe Tabelle 4). Der ADX - Indikator benutzt in seiner SQL
- Definition einen weiteren Indikator, den ADX0 - Indikator, welcher seinerseits den THLR - Indikator verwendet. Zur Erinnerung der ADX - Indikator
wird in mehreren Schritten berechnet (siehe Kapitel 3.1.2). Zuerst wird der
THRL bestimmt, danach ADX0 und anschließend der ADX berechnet werden. Nachdem die Wahl des ADX - Indikators getroffen wurde, wird seine
SQL - Definition aus der tbl_indicator ausgelesen und in der C# Methode GetIndicatorData() analysiert. Dabei wird in der SQL - Definition
nach dem Präfix „ind_“ gesucht. Dieses Präfix impliziert, daß die Berechnung
die Ergebnisse eines weiteren Indikators verwendet. Der Name des verwendeten „Sub“ - Indikators setzt sich aus dem Präfix „ind_“ und dem in der
Tabelle tbl_indicator in der Spalten shortname gespeicherten Indikator
- Namen handelt (z.B. ind_THLR) zusammen. Die Substituioon von Indikator - Platzhaltern wird rekursiv fortgesetzt, bis die SQL - Definition dees
Ursprungs - Indikators auf die Kursdaten der tbl_eod Tabelle verwendet.
Die Ergebnisse der Basis - Indikatoren werden als Sichten mit eindeutigen
benutzerspezifischen Namen in der Datenbank gespeichert. Der Sicht - Name
setzt sich dabei aus dem Präfix „view_“, gefolgt von Indikator - Namen und
der Identifikationsnummer der Benutzer - Sitzung (engl. Session) im Browser
(z. B. view_THLR_4osvyzf2c2qeg055bep2wy45 ) zusammen.
Nach dem die Benutzer - Sitzung beendet wurde (z. B. der Benutzer meldet sich im System ab), werden alle von diesem Benutzer angelegten Sichten
anhand der Indentifikationsnummer der Browser - Sitzung aus der Datenbank
gelöscht. Diese Vorgehensweise ermöglicht jedem Benutzer eigene Indikator Berechnungen in der Datenbank vorzunehmen, ohne die Daten der globalen
Tabellen zu verändern.
65
1
2
3
4
4
5
6
6
7
8
9
10
11
12
SELECT
ind_ADX0.instrumentID, ind_ADX0.daycount, ind_ADX0.dayhigh,
ind_ADX0.daylow, ind_ADX0.dayopen, ind_ADX0.dayclose,
ind_ADX0.volume, AVG(ADX1.Ind1) Ind1,
ind_ADX0.Ind2, ind_ADX0.Ind3
FROM
ind_ADX0 INNER JOIN ADX0 ADX1
ON (ind_ADX0.instrumentID = ADX1.instrumentID)
WHERE
ADX1.daycount <=ind_ADX0.daycount-@period(’Glättung’,14)
GROUP BY
ind_ADX0.instrumentID, ind_ADX0.daycount, ind_ADX0.dayhigh,
ind_ADX0.daylow, ind_ADX0.dayopen, ind_ADX0.dayclose,
ind_ADX0.volume, ind_ADX0.Ind2, ind_ADX0.Ind3
1
2
2
3
4
4
5
6
6
7
8
9
10
10
11
12
12
SELECT
view_ADX0_4osvyzf2c2.instrumentID, view_ADX0_4osvyzf2c2.daycount,
view_ADX0_4osvyzf2c2.dayhigh,view_ADX0_4osvyzf2c2.daylow,
view_ADX0_4osvyzf2c2.dayopen, view_ADX0_4osvyzf2c2.dayclose,
view_ADX0_4osvyzf2c2.volume, AVG(ADX1.Ind1) AS Ind1,
view_ADX0_4osvyzf2c2.Ind2, view_ADX0_4osvyzf2c2.Ind3
FROM
view_ADX0_4osvyzf2c2 INNER JOIN view_ADX0_4osvyzf2c2 ADX1
ON (view_ADX0_4osvyzf2c2.instrumentID = ADX1.instrumentID)
WHERE
ADX1.daycount <=view_ADX0_4osvyzf2c2.daycount - 14
GROUP BY
view_ADX0_4osvyzf2c2.instrumentID, view_ADX0_4osvyzf2c2.daycount
view_ADX0_4osvyzf2c2.dayhigh, view_ADX0_4osvyzf2c2.daylow,
view_ADX0_4osvyzf2c2.dayopen, view_ADX0_4osvyzf2c2.dayclose,
view_ADX0_4osvyzf2c2.volume, view_ADX0_4osvyzf2c2.Ind2,
view_ADX0_4osvyzf2c2.Ind3
Tabelle 4: SQL - Definition des ADX - Indikators vor und nach der Analyse
in der Methode GetIndicatorData().
66
7
Beispielszenarien
In diesem Kapitel wird die Bedienung der webbasierten TInTo - Anwendung
anhand von Benutzungsbeispielen beschreiben. Es werden zwei Beispielszenarien vorgestellt, welche die Hauptfunktionalitäten der Anwendung abdecken.
Bevor der Benutzer die webbasierte TInTo - Anwendung bedienen kann,
muß dieser im System authentifiziert werden (Abbildung 19). Die vom Benutzer angegebenen Authentifizierungsdaten Login - Name und Passwort werden mit den von Anwendungs - Administrator angelegten TInTo - Benutzern
in der Datebank - Tabelle „tbl_user “ verglichen. Nach einer erfolgreichen
Authentifizierung wird dem Benutzer in Abhängigkeit seiner Gruppe (Administrator oder Analyst) Zugriff auf die für die Gruppe freigegebenen Anwendungs - Konsolen ermöglicht.
Abbildung 19: Webbasierte TInTO - Anwendung: Anmeldung im System.
Wertpapier Analysieren
Die Analyse eines Wertpapiers findet in der Analysis - Konsole statt. Hierfür
steht dem Benutzer eine breite Palette an Einstellungen zur Verfügung:
• Instrument (Symbol): In diesem Auswahlmenü werden alle in der TInTo
- Datenbank gespeicherte Wertpapier - Symbole aufgelistet.
• Style: In diesem Auswahlmenü hat der Benutzer die Möglichkeit zwischen den Chart - Darstellungen wie Chandlestick, OHLC, Closing line
67
(Schlußkurs), Typical price (Typischer Kurs), Weighted close (Gewichteter Kurs) oder Median price (Mittlerer Kurs) zu wählen.
• Volume: Mit dem Aktivieren des Volume - Checkboxes werden die Umsätze, zusätzlich zum Kursverlauf, als Volumenbalken angezeigt. Dabei
ist der grüne Balken als Kaufsignal und der rote als Verkaufssignal zu
interpretieren.
• Logarithmic Scale: Mit dem Aktivieren dieses Checkboxes wird das
Diagramm logarithmisch skaliert.
• Price Band : In diesem Auswahlmenü werden alle im ChartDirector
vorhandene Preisbänder zur Verfügung gestellt.
• ChartDirector Indicator : ChartDirector liefert eine Vielzahl an vorimplementierten Indikatoren. Diese werden im diesem Auswahlmenü aufgelistet.
• TInTo Indicator : In diesem Auswahlmenü werden alle in der Datenbank gespeicherte Indikatoren aufgelistet.
Am linken Rand stehen dem Benutzer zwei Schaltflächen zur Verfügung:
Chart Anzeigen, Kursdaten und Indikator - Werte als Tabelle anzeigen. Beim
betätigen der ersten Schaltfläche wird ein Chart - Diagramm angezeigt, welche über den ganzen mittleren Bereich der Seite (Abbildung 20.a ) einnimt.
Beim betätigen der zweiten Schaltfläche wird der mittlere Bereich halbiert,
wobei im linken Bereich die Kursdaten und Indikator - Werte als Tabelle angezeigt wird und im rechten Bereich das zugehörige Diagramm (Abbildung
20.b ) angezeigt werden. In beiden Fällen werden die aktuell vorgenommenen
Einstellungen in die Berechnung der Werte übernommen.
Die TInTo - Wertpapier - Analyse setzt das Vorhandensein eines Wertpapiers und eines Indikators in der Datenbank voraus. Die Wertpapiere können
unt4er Instruments, in der Settings - Konsole verwaltet werden (Abbildung
21.a ). Um ein neues Wertpapier anzulegen wird wie folgt vorgegangen. Im
Bereich Instrument Search wird ein Suchsymbol eingegeben und die Art des
Wertpapiers sowie der Handelsmarkt ausgewählt. Nachdem die Werte ausgewählt wurden, wird mit dem Betätigen der rechten grünen Pfeil - Schaltfläche
eine Suchabfrage zum Yahoo - Webservice gesendet. Dieser Prozeß kann 2 3 Sekunden dauern, der Status wird dabei mit dem Ajax - UpdateProgress
- Steuerelement angezeigt. Der Yahoo - Webservice liefert eine Liste mit
übereinstimmenden Wertpapier - Symbole. Von denen kann der Benutzer
aus dem Symbol - Kombinationslistenfeld das gewünschte Symbol auswählen. Nach der Selektion des Wertpapier - Symbols werden die Felder Name
68
Abbildung 20: Webbasierte TInTO - Anwendung: Wertpapier Analysieren.
69
und Exchange mit entsprechenden Daten ausgefüllt. Beim Speichern eines
Wertpapiers in der Datenbank werden seine End Of Day - Kursdaten für den
Zeitraum vom 01.01.2000 bis zum aktuellen Datum beim Yahoo - Webservice
abgefragt und ebenfalls in der Datenbank gespeichert. Dem Benutzer wird
es auch ermöglicht, das Start - Datum der Kurs - Abfrage beliebig festzulegen.
Wählt der Benutzer das Suchsymbol „GE“, den Wertpapier - Typ „Equity“ und den Handelsmarkt „World Market“ aus, so würde eine Ergebnis Liste vom Yahoo - Webservice geliefert, in welcher das Symbol „DAX.TO“
vorkommt. Nach der Auswahl dieses Symbols wird eine erneute Abfrage an
den Yahoo - Webservice gesendet. Als Ergebnis der erneuten, verfeinerten
Anfrage wird der Name „DRAXIS HEALTH INC“ und die Handelsbörse
„(TOR) Toronto Exchange“ des Symbols geliefert. Mit der rechnten Kalender - Schaltfläche des Feldes „Start Date“ kann der Benutzer das Startdatum
für die Kursdaten - Abfrage des Wertpapiers auswählen (z. B. 28.11.2005).
Auf diese Weise wird verhindert, daß der Benutzer ein ungültiges Datum eingibt. Beim Speichern des Wertpapiers werden dann auch dessen Kursdaten
vom 28.11.2005 bis zum aktuellen Datum vom Yahoo - Webservice abgefragt
und ebenfalls in der Datenbank abgespeichert.
Die Verwaltung der Indikatoren findet unter Indicators - in der Settings Konsole statt (Abbildung 21.b). Alle Anwendungs - Konsolen sind in zwei Bereiche aufgeteilt. Links werden alle in der Datenbank gespeicherten Einträge
aufgelistet, rechts die detailierten Informationen zu den jeweiligen Einträgen
angezeigt. In der Indicators - Konsole werden auf der linken Seite alle in der
Datenbank vorhanden Indikatoren aufgelistet und auf der rechten Seite die
Informationen Symbol, Namen, Anzeige - Priorität, SQL - Definition, Sichtbarkeit und Bemerkung angezeigt. Der Momentum - Indikator besteht aus
einer einzelnen Kurve. Für Manche, z. B. dem MACD, werden jedoch mehrere Kurven berechnet. Jede dieser Kurven benötigt individuelle Eingaben für
Name, Farbe und weitere Darstellungsparameter. Diese sind im Feld Presentation einzutragen (siehe Abbildung 21.b).
Benutzer Verwalten
Die Verwaltung der TInTo - Benutzer wird in der Administration - Konsole
vorgenommen. Diese Konsole ist nur für die Administrator - Rolle zugänglich. Für Benutzer mit Analysten - Rolle wird diese Konsole ausgeblendet.
Beim Bearbeiten der Benutzer - Daten können
• die Personen - und Zugangs - Daten eingegeben,
• der Status verändert werden, d.h. der Zugang aktiviert bzw. deaktiviert
70
Abbildung 21: Webbasierte TInTO - Anwendung: Die Schaltflächen links
lösen Aktionen (von oben nach unten) Neuanlegen, Bearbeiten und Löschen
aus. a) Neues Wertpapier anlegen. b) Indikator bearbeiten.
71
werden,
• die Rollen - Zuordnung zur Benutzergruppe festgelegt werden.
Die Abbildung zeigt die Administration des Benutzers „Eva Schneider“, welcher die Rolle „Analyst“ zugeordnet und der Zugang (Status) gesperrt wird.
Abbildung 22: Webbasierte TInTO - Anwendung: Benutzer verwalten.
72
8
Bewertung und Ausblick
Ziel dieser Diplomarbeit war es, eine webbasierte Version des TInTo - Systems
zu realisieren, wobei die Kernfunktionalitäten der ersten TInTo - Version [19]
übernommen und zusätzlich eine Benutzerverwaltung im System umgesetzt
werden sollte.
Bei den ersten TInTo - Versionen ([19] und [23]) handelt es sich um eine Access - Anwendung, welche auf dem lokalen Rechner des Benutzers zu
installieren und zu bedienen ist. Die aktuelle Realisierung der webbasierten
TInTo - Version ist eine .NET - Anwendung, welche eine Oracle Datenbanksystem verwendet. Mit der webbasierten TInTo - Version ist es nun möglich,
die Anwendung von einem beliebigen Ort über das Internet zuzugreifen und
zu nutzen. Die Anwendung muss hierzu nur einmal auf einem Webserver installiert und konfiguriert werden.
Zu den Kernfunktionalitäten der ersten TInTo - Version gehört unter anderem die Analyse von Wertpapieren auf Basis der EOF - Kursdaten. Mit der
zweiten Version ist auch die Realisierung der Intraday - Analyse umgesetzt.
Die Intraday - Analyse, aus der Datenbank - Sicht, läßt sich mittels des Konzepts der Änderungspropagierung realisieren. Das Konzept materialisierter
Sichten ist zu diesem Zweck von besonderer Bedeutung. Im Allgemeinen unterstützt Access keine materialisierten Sichten. Gereon Schüller erarbeitete
daher ein Verfahren, welches die Änderungspropagierung in Access ohne materialisierten Sichten simuliert. Dieses Verfahren wurde nicht in die Oracle Datenbank der webbasierten TInTo - Version übernommen. Zwar unterstützt
Oracle das Konzept der materialisierten Sichten, die Reimplementierung der
Intraday - Analyse hätte jedoch den Rahmen dieser Arbeit weit überschritten.
Tabelle 5 zeigt, wie die Materialisierung einer Sicht für den Momentum Indikator in Oracle durchgeführt werden kann. Zuerst soll für jede Tabelle,
die in der Sicht - Definition mit fast - Aktualisierungsmethode vorkommt, eine Log - Tabelle in der Datenbank angelegt werden (Tabelle 5.a). Diese Log Tabelle protokolliert alle Änderungen, die an der Basistabelle vorgenommen
wurden. Die Verwendung der fast - Aktualisierungsmethode unterliegt allerdings einigen Einschränkungen [9].
Nachdem die LOG - Tabellen für alle in der zu materialisierenden Sicht
vorkommenden Basistabellen angelegt wurden, kann die Sicht materialisiert
werden. Verwendet die Sicht einen Join - Operator, so sind alle ROWID der
beteiligten Basistabellen anzugeben (Tabelle 5.b).
Für folgende Arbeiten wäre die Implementierung der Intraday - Analyse
73
1
2
3
4
5
6
7
8
9
10
CREATE MATERIALIZED VIEW LOG ON
„tinto“.“tbl_eod“,
TABLESPACE „USERS“
WITH PRIMARY KEY, ROWID, SEQUENCE
(
„instrumentid“, „date„ , „count“,
„open“, „high„ , „low“, „close“,
„volume“, „volume1„ , „volume2“, „volume3“,
)
INCLUDING NEW VALUES
a)
1
2
3
4
4
4
6
7
8
8
4
8
4
8
8
8
CREATE MATERIALIZED VIEW
view_Momentum
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
ENABLE QUERY REQRITE AS
SELECT
tbl_eod.ROWID eodRowid, tbl_eod1.ROWID eod1Rowid,
tbl_eod.instrumentID, tbl_eod.count, tbl_eod.date,
tbl_eod.open, tbl_eod.high, tbl_eod.low, tbl_eod.close,
tbl_eod.volume, tbl_eod.close - tbl_eod1.close Ind1
FROM
tbl_eod, tbl_eod tbl_eod1
WHERE
tbl_eod.instrumentID=tbl_eod1.instrumentID AND
tbl_eod.instrumentID=2 AND tbl_eod.tradingdaycount > 0
AND tbl_eod1.tradingdaycount = tbl_eod.tradingdaycount - 10
b)
Tabelle 5: Materialisierung der SQL - Definition des Momentum - Indikators
in Oracle.
74
in der Tinto - Webanwendung unter Verwendung materialisierter Sichten
sowie ein Vergleich zur Access -Implementierung sicherlich eine interessate
Aufgabe.
75
A
Installation und Konfiguration der TInToWebanwendung
In diesem Abschnitt wird dem Leser das notwendige Wissen über die Installation und die Konfiguration der webbasierten TInTo - Anwendung vermittelt.
Diese Schritte müssen nur auf einen Rechner, dem Webserver, durchgeführt
werden.
Software und Klassenbibliotheken
Zuerst müssen die für das Erstellen und das Ausführen der webbasierten
Anwendung benötigten Software und Klassenbibliothekn auf dem Arbeitsrechner installiert werden. Diese sind:
1. Das .NET - Framework 2.0 : Laufzeitumgebung und Klassenbibliothek
der .NET - Technologie, welche kostenlos von der Microsoft - Homepage
bezogen werden kann[6].
2. ASP.NET Ajax Estensions: Ein Framework zu Nutzung von Ajax Funktionalitäten in ASP.NET - Anwendungen, die auf ASP.NET basieren [2]. Nach der Installtion wird dieses automatisch in das Visual
Studio 2005 integriert.
3. Visual Studio .NET 2005 : Entwicklungsumgebung (IDE) für die .NET
- Technologie. Die IDE ist für das Studien - und die Forschungszwecke
kostenlos vom MSDN Academic Alliance Software-Center [7] runterzuladen.
4. Oracle Database 10g : Ein relationales Datebanksystem, welches für
nicht kommerzielle Zwecke frei verfügbar ist [8].
5. Oracle SQL Developer : Eine kostenlose grafische Entwicklungsumgebung, welche für die Enwicklung innerhalb der Oracle - Datenbank
eingesezt wird [10].
Die Notwendigkeit dieser Installationen läßt sich in zwei Arten unterscheiden.
Handelt es sich um einen Arbeitsrechner, auf welchen eine Weiterentwicklung
der webbasierten Anwendung betrieben wird. In diesem Fall sind alle aufgezählten Installationen notwendig. Handelt es sich um einen Rechner, auf
welchem die Anwendung nur ausgeführt und für Öffentlichkeit bereitgestellt
wird (d.h. dieser Rechner fungiert als ein Webserver), dann müsssen in den
Punkten 1, 2 und 4 genannten Installationen durchgeführt werden.
76
CD - Inhalt
Es wurde eine CD bereitgestellt, welche folgende Dateien bzw. Ordner enthält:
• TInTo - Ordner : In diesem Ordner befinden sich alle für die Weiterentwicklung notwendigen Quellcode - Dateien.
• TInToDocumentation.htm: Diese Datei beinhaltet eine vollständige Dokumentation des TInTo - Programm - Quellcodes.
• TInToDistribution - Ordner : In diesem Ordner befinden sich alle notwendige Ordner bzw. Dateien, welche für das Publizieren der Anwendung auf einem Webserver notwendig sind.
• Oracle Export - Datei (tinto.dump): ist eine Sicherung aller TInTo Datenbankobjekte. Anhand dieser Datei kann die TInTo - Datenbank
in einen andere Oracle - Dateinbank - Server importiert werden.
Im Folgenden wird die Konfiguration des TInTo - Anwendung und das Einrichten der Oracle Datenbank beschrieben.
Konfiguration der webbasierten TInTo - Anwendung
Um die webbasierten TInTo - Anwendung auf einem Arbeitsrechner für die
Weiterentwicklung einzurichten wird folgendermaßen vorgeganen:
1. Den Inhalt des TInTo - Ordners auf den Zielrchner kopieren. (z. B.
„C:\Projekt\Tinto“)
2. Virtuelles Web - Verzeichnis einrichten:
Start → Systemsteuerung → Verwaltung → Internet-Informationsdienste
(IIS) → in Standardwebsite mit rechten Maustaste auf Neu → Virtuelles Verzeichnis → Alias „Tinto“ → Verzeichnis eingegeben (hier
„C:\TinTo\Web“) → Alle Zugriffsberechtigungen aktivieren → Fertig
stellen.
3. Mit der rechten Maustaste auf die Eigenschaften der Tinto - Webseite
aufrufen:
• im Register „"Virtuelles Verzeichnis’ → Skriptzugriff aktivieren.
77
• im Register „Dokumente“ → „Standarddokument aktivieren“ →
Hinzufügen → „index.aspx“ → in der Liste ganz oben einordnen.
→ OK
4. Die Anwendung in Visual Studio .NET 2005 einrichten
• Datei → Neu → Projekt → Andere Projekttypen → Leere Solution. Einen Namen (z.b. „TInTo“) und den Speicherort (hier
„C:\Projekt“)
• Mit der rechten Maustaste auf die Solution klicken → Hinzufügen
→ Eine existierende Webseite → TInTo - Webseite auswählen
• Mit der rechten Maustaste auf die Solution klicken → Hinzufügen → Ein existierendes Projekt → globals.csproj auswählen
(„C:\Projekt\Tinto \Globals \“)
• Zuerst das Globals - Projekt kompilieren und anschließend die
ganze Tinto - Solution kompilieren.
In den Projekt - Ordnern wird auf das Ajax - Assebmly verwiesen, dieser
Pfad muß gegebenenfalls aktualisiert werden.
Konfiguration der TInTo - Datenbank in Oracle
Eine vorhandene Installation dees Oracle Datebanksystem wird an dieser
Stelle vorausgesetzt. Zunächst muß ein Benutzer „tinto“ mit dem Kennwort
„tinto“ angelegt werden (siehe hierzu die Oracle Online Dokumentation [9]).
Der Export und Import einer Oracle - Datenbank kann über die Kommandozeile des Betriebssystems erfolgen, wobei die Oracle - Befehel „exp“(steht
für Export) und „imp“ (steht für Import) benutzt werden. Die Export - Datei
„tinto.dump“ wird mit dem „imp“ - Befehl importiert.
[Import-Befehl] [Username] / [Kennwort] @ [Oracle - Instanz] [File Eingabe]
imp tinto/tinto@orcl file = tinto.dump
Für das Exportieren der Datenbank - Objekte aus Oracle wird analog
vorgegangen.
exp tinto/tinto@orcl file = tinto.dump full
78
Literatur
[1] Asp.net ajax. Microsoft Corporation.
[2] Asp.net ajax 1.0. Microsoft Corporation.
[3] Chartdirector - software. Advanced Software Engineering.
[4] Die programmiersprache c# für java-entwickler. Microsoft Corporation.
[5] It - lexicon. DATACOM Buchverlag GmbH 2004-2007.
[6] Microsoft .net framework 2.0 redistributable. Microsoft Corporation.
[7] Msdn academic alliance software-center. Powered by e-academy.
[8] Oracle database 10g release 2 enterprice edition. Oracle Corporation.
[9] Oracle database data warehousing guide 10g release 2 (10.2). Oracle
Online Documentation.
[10] Oracle sql developer. Oracle Corporation.
[11] Webanwendungen mit asp.net. Microsoft Corporation.
[12] http://www.boerse-online.de/, 2007. Börse-Online.DE, Börsenlexikon.
[13] Microsoft homepage. http://www.microsoft.com/germany, 2007.
[14] Microsoft office access. http://office.microsoft.com/de-de/access/, 2007.
Microsoft Corporation.
[15] Microsoft sql server. http://www.microsoft.com/germany/sql/default.mspx,
2007. Microsoft Corporation.
[16] Oracle corporation. http://www.oracle.com, 2007.
[17] Wikimedia foundation inc. http://de.wikipedia.org/, 2007.
[18] F. Eller, editor. Visual C# 2005. Addison-Wesley, 2006.
[19] C. Hübel. TInTo - Ein datenbankgestütztes Werkzeug zur regelbasierten Wertpapieranalyse. Diplomarbeit, Rheinische Friedrich-WilhelmsUniversität Bonn, Institut für Informatik III, Dezember 2006.
[20] T. Müller and H. Nietzer, editors. Das große Buch der Technischen
Indikatoren. Tm Boersenverlag, 2004.
79
[21] J. J. Murphy, editor. Technische Analyse der Finanzmärkte. Finanzbuch
Verlag GmbH, 2004.
[22] J. Nilsson. Applying Domain-Driven Design and Patterns. Addison
Wesley, 2006.
[23] G. Schüller. Änderungspropagierung zur regelbasierten Analyse von
Finanz-Datenströmen in TInTo. Diplomarbeit, Rheinische FriedrichWilhelms-Universität Bonn, Institut für Informatik III, September 2007.
[24] A. und A.Eickler, editor. Datenbanksysteme. Oldenbourg Wissenschaftsverlag GmbH, 2004.
80
Herunterladen