Hallo zusammen,
zur Zeit realisiere ich in einem Hobbyprojekt ein Programm zur Analyse von Aktienkursen. Ich verwende MS SqlServer zur Speicherung der Kursdaten. In diesem Programm werden verschiedene Indikatoren verwendet um Kauf bzw. Verkaufssignale für eine Aktie zu generieren. Diese Indikatoren möchte ich aus Performancegründen während des Imports der Kursdaten berechnen lassen. Bisher soweit alles noch möglich, jedoch brauche ich jetzt einen Indikator dessen Wert sich aus dem Wert vom Vortag und dem aktuellen Kurs berechnet. Die notwendigen Tabellen habe ich in einer 1:n Beziehung mit folgender Stuktur vorliegen:
-- Kursdaten der Aktien
CREATE TABLE dbo.STOCK_QUOTE(
STOCK_QUOTE_ID INT, -- PK der Tabelle (Identity Spalte)
STOCK_ID INT, -- Id. der Aktie
QUOTE_DATE DATE, -- Tag des Kurses
QUOTE_CLOSE DECIMAL(28,2) -- Schlusskurs der Aktie für den jeweiligen Tag
)
-- Details zu den Kursdaten mit Indikatoren
CREATE TABLE dbo.STOCK_GDS(
STOCK_QUOTE_ID INT, Id. des Kurses der Aktie pro Tag (FK zu dbo.STOCK_QUOTE
GDS_DAYS INT, Anzahl der Tage für den gleitenden Durchschnitt
EGDS DECIMAL(28,2), -- der Indikator den ich berechnen möchte
-- ... weitere Indikatoren-Spalten
)
Die Tabelle STOCK_QUOTE befülle ich mit den Kursdaten per INSERT mit Informationen aus dem Internet. Im Nachgang würde ich nun die STOCK_GDS Tabelle mit INSERT ... SELECT befüllen, dabei werden die Kursdaten aus der STOCK_QUOTE Tabelle gezogen und für jeden GDS_DAYS Wert von 10 bis 100 berechnet. Bei der Berechnung des EGDS Wertes hänge ich nun, da er sich aus dem EGDS Wert des Vortages + dem Schlusskurs der Aktie für den aktuellen Tag berechnet. Spezialität dabei ist, dass für den ersten Tag der EGDS = der Schlusskurs ist. Ich bräuchte eure Hilfe wie ich das am Besten realisieren kann.
Noch eine Anmerkung: Es sind die Kursdaten von 30 Aktien über einen Zeitraum vom 01.01.2003 bis heute. Bei der STOCK_GDS Tabelle bin ich in einer Größenordnung von ca. 10.000.000 Datensätzen. D.h. ich brauche eine relativ performante Lösung, wo die Daten in nicht mehr als 30 Minuten initial gefüllt werden. Wenn nun ein neuer Tag ist, werden nicht mehr alle Daten sondern nur die Daten vom Vortag + vom aktuellen Tag eingefügt. Die Lösung müsste also auch damit klar kommen...
Vielen Dank schon mal für das Lesen und noch mehr Dank wenn ihr eine Idee für eine Lösung meines Problems habt.
Tschüß
Rossibaer
zur Zeit realisiere ich in einem Hobbyprojekt ein Programm zur Analyse von Aktienkursen. Ich verwende MS SqlServer zur Speicherung der Kursdaten. In diesem Programm werden verschiedene Indikatoren verwendet um Kauf bzw. Verkaufssignale für eine Aktie zu generieren. Diese Indikatoren möchte ich aus Performancegründen während des Imports der Kursdaten berechnen lassen. Bisher soweit alles noch möglich, jedoch brauche ich jetzt einen Indikator dessen Wert sich aus dem Wert vom Vortag und dem aktuellen Kurs berechnet. Die notwendigen Tabellen habe ich in einer 1:n Beziehung mit folgender Stuktur vorliegen:
-- Kursdaten der Aktien
CREATE TABLE dbo.STOCK_QUOTE(
STOCK_QUOTE_ID INT, -- PK der Tabelle (Identity Spalte)
STOCK_ID INT, -- Id. der Aktie
QUOTE_DATE DATE, -- Tag des Kurses
QUOTE_CLOSE DECIMAL(28,2) -- Schlusskurs der Aktie für den jeweiligen Tag
)
-- Details zu den Kursdaten mit Indikatoren
CREATE TABLE dbo.STOCK_GDS(
STOCK_QUOTE_ID INT, Id. des Kurses der Aktie pro Tag (FK zu dbo.STOCK_QUOTE
GDS_DAYS INT, Anzahl der Tage für den gleitenden Durchschnitt
EGDS DECIMAL(28,2), -- der Indikator den ich berechnen möchte
-- ... weitere Indikatoren-Spalten
)
Die Tabelle STOCK_QUOTE befülle ich mit den Kursdaten per INSERT mit Informationen aus dem Internet. Im Nachgang würde ich nun die STOCK_GDS Tabelle mit INSERT ... SELECT befüllen, dabei werden die Kursdaten aus der STOCK_QUOTE Tabelle gezogen und für jeden GDS_DAYS Wert von 10 bis 100 berechnet. Bei der Berechnung des EGDS Wertes hänge ich nun, da er sich aus dem EGDS Wert des Vortages + dem Schlusskurs der Aktie für den aktuellen Tag berechnet. Spezialität dabei ist, dass für den ersten Tag der EGDS = der Schlusskurs ist. Ich bräuchte eure Hilfe wie ich das am Besten realisieren kann.
Noch eine Anmerkung: Es sind die Kursdaten von 30 Aktien über einen Zeitraum vom 01.01.2003 bis heute. Bei der STOCK_GDS Tabelle bin ich in einer Größenordnung von ca. 10.000.000 Datensätzen. D.h. ich brauche eine relativ performante Lösung, wo die Daten in nicht mehr als 30 Minuten initial gefüllt werden. Wenn nun ein neuer Tag ist, werden nicht mehr alle Daten sondern nur die Daten vom Vortag + vom aktuellen Tag eingefügt. Die Lösung müsste also auch damit klar kommen...
Vielen Dank schon mal für das Lesen und noch mehr Dank wenn ihr eine Idee für eine Lösung meines Problems habt.
Tschüß
Rossibaer