Jump to content
makze

Analyse-Tool

Recommended Posts

makze
Posted

Ist es egal von welcher Website ich mir die Kursdaten lade oder gibt es extra Quellen, die die Öffentlichkeit frei nutzen darf?

Share this post


Link to post
tatanka
Posted
Ist es egal von welcher Website ich mir die Kursdaten lade oder gibt es extra Quellen, die die Öffentlichkeit frei nutzen darf?

Rein technisch gesehen ist es sicher egal, wenn die Daten in einem Format vorliegen, das Du verarbeiten kannst. Beachten musst Du die Nutzungsbedingungen der Websites. Diese schließen z.T. automatisierte Downloads und gewerbliche Nutzung aus.

Share this post


Link to post
makze
Posted

Wenn ich nun meine Kursdaten in einer Datenbank vorliegen habe und mir Indikatoren berechenen möchte, ist es dann besser die Daten erst in einem Array o.ä. zu speichern oder immer per SQL-Abfrage die Daten aus der Datenbank zu holen?

Share this post


Link to post
ipl
Posted

Array.

Share this post


Link to post
ankariu
Posted

@makze: Wie weit bist du denn mit deinem kleinen Softwareprojekt derzeit?

 

Anmerkung: Ich bin neu hier im Forum, eigne mir grade durch intensive Lektüre Basiswissen an. Als Softwareentwickler habe ich eine gewisse Affinität logische Zusammenhänge zu automatisieren und manuellen Aufwand zu minimieren, leider fehlt mir das Grundwissen um eine solche Anwendung zur Prognose zu realisieren.

 

Aber gibt es nicht schon genügend Software die eine, wie von dir gewünschte, Prognose erstellt? Geht es dir allein um die Analyse der Daten oder möchtest du den Tradingprozess auch über diese Software abbilden bzw. ausführen lassen? (Letzteres ist technisch sicherlich möglich, aber wohl eher nicht ratsam)

 

Viele Grüße,

André

 

PS: Eine graphische Oberfläche und eine Datenbankanbindung geht in vielen Sprachen sehr schnell, wenn man die richtigen Entwicklungsumgebungen hat.

Share this post


Link to post
makze
Posted

@ankariu: Datenbank steht, was ja in 2 Minuten erledigt ist, bin grade an der Datenpflege, man muss sich doch ersteinmal in die Sprache einarbeiten. Mir geht es nicht um das automatische Traden, sondern nur um die Analyse. Hier hast du auch recht, dass es hier schon eine Menge Programme gibt. Mir geht es auch nicht nur darum ein Programm nachzubauen, sondern auch Indikatoren bei der Analyse kennen zu lernen, zusammenhänge vielleicht zu erkennen und im Programmieren fitter zu werden.

 

Frage an alle: nimmt der Verbindungsaufbau zu der Datenbank viel Leistung und Zeit in Anspruch? Sollte man versuchen, so selten wie möglich die Verbindung zu öffnen/schliessen? Kann man die Verbindung einfach offen lassen während das Programm läuft, oder lieber schliessen, wenn sie nichtmehr benötigt wird?

Share this post


Link to post
ankariu
Posted

Nabend makze,

 

sprich du arbeitest dich auch grade in die Materie ein :)

 

Im Prinzip ist das mit der Datenbank so eine Sache, es gehört meines Erachtens nach zu einem guten Programmierstil, die DB nur bei Bedarf zu öffnen und wieder zu schließen. Wenn du jedoch der Einzige bist, der auf der DB arbeitet und dein PC etwas Leistung hat, sollte es kein Problem darstellen die Verbindung offen zu lassen.

 

Was nimmst du denn für eine DB bzw. für einen DB-Server?

 

Was sehr wichtig ist, sind qualifizierte Zugriffe, sprich du durchsuchst die DB nach Feldern, die Indiziert sind, somit erleichterst du die Suche, das gibt viel Performance! Was ganz schlecht ist sind unqualifizierte Zugriffe auf lange Stringfelder, weil er da sequentiell durchsucht. Zudem sollte man komplexe Joins vermeiden. Wenn du dazu Fragen hast, schau ich gerne immer mal wieder hier hinein! :)

 

Grüße,

André

Share this post


Link to post
H.B.
Posted
@ankariu: Datenbank steht, was ja in 2 Minuten erledigt ist, b

 

Das hört sich nach einem ziemlichen Schnellschuß an.

 

Welche Daten legst du in der DB ab?

 

Grundsätzlich sollt man die Zugriffe auf die DB durch Paketzugriffe optimieren.

D.h. die Datenbankkonfigurartion und die Abfrage sollten korresponieren. Wenn die DB zb. 64K Pakete ausliest, dann solltest du die Felder als 64K Einheiten organisieren.

 

Anstatt einfach OHLC-Daten zu speichern kann man z.b. folgendes machen: 1. Intervall (int). 2. open(datetime) 3. daten(text/bolb)

Die Daten werden in einem Zug eingelesen. Dort wird der Datentyp einer Struktur abgelegt. Die Daten könnte man zb. in folgender Struktur dort ablegen

array[ strukt( open, high, low, close, vol)] . Damit kann man erhebliche Zugriffzeitverkürzungen realisieren.

 

Was leider nicht mehr geht, sind direkte Datenbankabfragen, die dir die Daten in der von dir erwarteten OHLC-Auflösung bereitstellen. Aber das kann dein Programm ja vermutlich genauso schnell.

 

Wenn du einfach "plain"-Daten ablegst, wirst du früher oder später auf die Internet-Datenbanken von Google und Yahoo als Datenquellen ausweichen, weil diese selbst über die API's einfach schneller sind.

Share this post


Link to post
makze
Posted · Edited by makze

Ich benutze im Moment eine Access-Datenbank. Ich vermute einfach mal, dass mySQL und andere DB-Server schneller sein könnten und mir ist auch bewusst, dass die SQL-Strings anders sind und die Connection anders aufgebaut werden muss, aber Access ging einfach schneller von der Hand. In fortgeschrittenem Stadium werde ich dies dann auch noch ändern, falls andere DBs schneller sind oder andere Vorteile haben.

Könnt ja eure Meinung zur Access-DB abgeben.

 

@ankariu: Wenn du mit indizierten Feldern meinst, dass man bei der Suche nach einem Wertpapier nich den Firmennamen vergleicht, sondern eine ID vom Typ Integer um an ausgewählte Daten zu kommen, dann hab ich das schon so realisiert. Oder meinst du, dass auch die Spaltenbeschriftungen nummerisch sein sollen?

 

@ficoach: Von Paketzugriffen habe ich noch nichts gehört. Das klingt auch sehr nach Feintuning und sowas wollte ich Organisieren, wenn das Programm schon grob steht.

Die OHLC-Daten in einem Array abzuspeichern klingt clever, habe ich aber erstmal nicht so realisiert, sonder eine Tabelle

Kurse(WID, Datum, Op, Hi, Lo, Cl, Vol) in der OHLC als Single, Vol, WID als Integer und Datum als Date vorkommen.

Die Daten hol ich mir dann aus dem HTML-Quellcode von Websites. Dies nimmt denke ich recht viel Zeit in Anspruch (Quelltext als String, String nach Daten durchsuchen, String bearbeiten...). Hier wäre doch sicher der zugriff auf die Internet-Datenbank besser geeignet, oder? Ich weiss nur nicht, wie das funktioniert.

Share this post


Link to post
makze
Posted

Weiss jemand, wann (welche Uhrzeit) die Kurse nach Börsenschluss bei Yahoo in die Liste der Historischen Kurse getragen werden? Und sind die Kurse dort dann immer aktuell, oder kommt es vor, dass hier mal einen Tag nichts nachgetragen wird?

Share this post


Link to post
H.B.
Posted · Edited by ficoach
Ich benutze im Moment eine Access-Datenbank.

 

Die Daten hol ich mir dann aus dem HTML-Quellcode von Websites. Dies nimmt denke ich recht viel Zeit in Anspruch (Quelltext als String, String nach Daten durchsuchen, String bearbeiten...). Hier wäre doch sicher der zugriff auf die Internet-Datenbank besser geeignet, oder? Ich weiss nur nicht, wie das funktioniert.

 

Ich weiss ja nicht, was du so treibst, aber für Yahoo, Msn und google-finance gibt es jeweils eine gute API und für die einzelnen Progammsprachen mehr oder weniger geeignete Schnittstellen.

 

hier mal die ruby-Schnittstelle:

require 'yahoofinance'

 

# Set the type of quote we want to retrieve.

# Available type are:

# - YahooFinanace::StandardQuote

# - YahooFinanace::ExtendedQuote

# - YahooFinanace::RealTimeQuote

quote_type = YahooFinance::StandardQuote

 

# Set the symbols for which we want to retrieve quotes.

# You can include more than one symbol by separating

# them with a ',' (comma).

quote_symbols = "yhoo,goog"

 

# Get the quotes from Yahoo! Finance. The get_quotes method call

# returns a Hash containing one quote object of type "quote_type" for

# each symbol in "quote_symbols". If a block is given, it will be

# called with the quote object (as in the example below).

YahooFinance::get_quotes( quote_type, quote_symbols ) do |qt|

puts "QUOTING: #{qt.symbol}"

puts qt.to_s

end

 

# You can get the same effect using the quote specific method.

quotes = YahooFinance::get_standard_quotes( quote_symbols )

quotes.each do |symbol, qt|

puts "QUOTING: #{symbol}"

puts qt.to_s

end

 

The following is an example of using the YahooFinance Ruby module to download historical quote data.

 

require 'yahoofinance'

 

# You can get the historical quote data in 2 formats:

# 1. As an array of raw data.

# 2. As a YahooFinance::HistoricalQuote object.

 

# Getting the historical quote data as a raw array.

# The elements of the array are:

# [0] - Date

# [1] - Open

# [2] - High

# [3] - Low

# [4] - Close

# [5] - Volume

# [6] - Adjusted Close

 

# The following example will download 30 days worth of qutoes.

# See the note below on the meaning of the number of days.

YahooFinance::get_historical_quotes_days( 'YHOO', 30 ) do |row|

puts "YHOO,#{row.join(',')}"

end

# The API also supportes retrieving quotes based on specific dates.

YahooFinance::get_historical_quotes( 'YHOO',

Date.parse( '2005-09-09' ),

Date.today() ) do |row|

puts "YHOO,#{row.join(',')}"

end

 

Ich frage mich jedoch grundsätzlich, warum du die EOD-OHLC-Daten speicherst, wenn Google, MSN und Yahoo diese stets bereitstellen.

Share this post


Link to post
makze
Posted
Ich weiss ja nicht, was du so treibst, aber für Yahoo, Msn und google-finance gibt es jeweils eine gute API und für die einzelnen Progammsprachen mehr oder weniger geeignete Schnittstellen.

Teilweise weiss ich das auch nicht, hab ich das Gefühl.. Ist alles halb improvisiert

 

Ich frage mich jedoch grundsätzlich, warum du die EOD-OHLC-Daten speicherst, wenn Google, MSN und Yahoo diese stets bereitstellen.

Um sie Offline verfügbar zu haben und unabhäng von der Quelle zu sein, falls meine Internetconnection mal weg ist. Hat ja keinen Nachteil, ausser Festplattenspeicher oder?

 

Aber das mit der API wusste ich vorher garnicht. Hast du auch den Code für VB zur Hand?

Share this post


Link to post
H.B.
Posted
Teilweise weiss ich das auch nicht, hab ich das Gefühl.. Ist alles halb improvisiert

 

 

Hast du auch den Code für VB zur Hand?

 

Sorry, Weich&Winzig kommt mir nicht ins Haus.

Share this post


Link to post
makze
Posted

Aber vielleicht hat hier jemand nen intressanten link, wo beschrieben ist, wie man über eine API an die Daten kommt?

Share this post


Link to post
ankariu
Posted
@ankariu: Wenn du mit indizierten Feldern meinst, dass man bei der Suche nach einem Wertpapier nich den Firmennamen vergleicht, sondern eine ID vom Typ Integer um an ausgewählte Daten zu kommen, dann hab ich das schon so realisiert. Oder meinst du, dass auch die Spaltenbeschriftungen nummerisch sein sollen?

 

Ja ich meinte das mit den Key und der Indizierung, aber es kommt auch auf die Datenvolumina an, mit denen du arbeiten möchtest, man muss ja nicht zwingend mit Kanonen auf Spatzen schießen! :)

 

Aber wenn du von API's garkeine Ahnung hast, würde ich entweder mal nach einer Fertigen Lösung suchen und die nur implementieren, oder die Finger davon lassen und weiter die Accesslösung voran treiben, man kann sich bei Software in Schönheiten verlieren, aber dazu sollte erst die Kernfunktionalität gegeben sein.

 

Aber vielleicht hat hier jemand nen intressanten link, wo beschrieben ist, wie man über eine API an die Daten kommt?

Habe ich für VB jetzt leider nicht, da ich eigentlich "aktiv" nur APAB / Java entwickle.

 

Wie soll dein Programm denn laufen? Also du nennst gewisse Indikatoren, die für dich eine interessante Aktie ausmachen und dein Programm analysiert die dazu benötigten Daten aus der Datenbank und gibt dir entsprechende Ergebnisse aus? Anmerkung, dass man mit bereits vorhandener Software analysieren kann ist mir bewusst, aber kann man auch bewusst mit Hilfe von Indikatoren seine "Superaktie" filtern?

 

Viele Grüße,

André

Share this post


Link to post
makze
Posted

Eine Superaktie will ich garnicht finden, kann man bestimmt auch nicht, aber ich erhoffe mir Programmiererfahrung, Analyseerfahrung und Hinweise auf intressante Werte, keine 100% Aussage.

Wenn das mit der API wirklich so schwer ist, dann werde ich die Datenbeschaffung erstmal anders regeln, ist dann bestimmt nicht so elegant, aber funktionieren sollte es trotzdem. Fall jemand trotzdem noch Tipps wegen API und YahooDB hat, dann immer her damit.

Share this post


Link to post
makze
Posted · Edited by makze

Bericht zu den Fortschritten im Oktober:

 

Mein Programm lädt auf Knopfdruck die noch nicht eingetragenen Kursdaten seit der letzten aktualisierung runter.

Ausserdem kann man auf Knopfdruck durch eine Eingabemaske ein neues Wertpapier in die Datenbank eintragen, wobei automatisch die historischen Daten runtergeladen werden.

Beides geschieht ohne zugriff auf api.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...