Jump to content
Tom Next - Daytrading Community

Aktienübersicht


Buddahbrot

Recommended Posts

Guten Morgen, Mittag, oder Tag - sucht es euch aus.

 

Da ich gerade mitten in der Vorbereitung auf meine Semesterprüfungen stecke und man ja bekanntlich Programmierung durch nichts besser lernt als durch die praktische Programmierung selbst (in den göttlichen Kreisen auch Coden genannt :prayer: :laugh: ) habe ich mir gedacht, passend zum Thema und durch Anregung von cxalgo arbeite ich doch mal an einem kleinen Datenbanksystem.

Gesagt, getan. Innerhalb der letzten Stunde entstand also folgendes Programm, das allerdings noch sehr ausbaufähig ist.

Wie genau ich die aktuellen Marktwerte verschiedener Aktien einfließen lassen kann, darauf bin ich noch nicht gekommen - nach den Prüfungen findet sich dazu aber bestimmt auch eine Lösung - oder vielleicht ja sogar hier?

 

Ich hoffe ihr könnt etwas damit anfangen, vielleicht finden wir ja gemeinsam eine Lösung zum Einfügen der aktuellen Marktwerte?!

 

Achja, das ganze ist in C programmiert! (C lebt!... :pope: )

 

edit: Okay, ich kann keine .c Source-Dateien hochladen, also gibts das ganze in Form von Textpassagen hier:

 

# include <stdio.h>
# include <stdlib.h>
# include <ctype.h>

# define FALSE 0
# define TRUE !FALSE
# define EINGABELAENGE 40

struct s_stock_data
{
char name[EINGABELAENGE];
float buy_price;
float current_price;
};

void write_info()
{
FILE*stocks;
struct s_stock_data stock;			//Variable der Struktur struct s_stock_data
char input[EINGABELAENGE+1];

fflush(stdin);
printf("Aktienname: ");
fgets(stock.name, EINGABELAENGE, stdin);			//Eingabe des Aktiennamen durch Zugriff auf Struktur
printf("Kaufkurs: ");
stock.buy_price=(float)atof(fgets(input, EINGABELAENGE, stdin));		//Errechnung des Kaufpreises mit Zugriff auf Struktur
stock.current_price=stock.buy_price/11;									//Errechnung des aktuellen Preises (Beispielswert!!!)

stocks=fopen("stocks.dat", "a");
if (stocks == NULL)
{
	puts("Dateifehler");
	exit(1);
}

fwrite(&stock, sizeof(stock), 1, stocks);			//Adresse der Struktur, Größe des Datensatzes, Anzahl zu schreibender Datenblöcke, filehandle

fclose(stocks);
puts("Aktie hinzugefuegt!\n");
}

void read_info()
{
FILE*stocks;
struct s_stock_data stock;
int x;

stocks=fopen("stocks.dat", "r");
if (stocks == NULL)
{
	puts("Datei ist leer oder nicht vorhanden!\n");
	return;
}

while (TRUE)
{
	x=fread(&stock, sizeof(stock), 1, stocks);

	if (x == 0)
		break;

	printf("\nName: %s\n", stock.name);
	printf("Kaufkurs: EUR %.2f\n", stock.buy_price);
	printf("Aktueller Kurs: EUR %.2f\n", stock.current_price);
}
fclose(stocks);
}

int main()
{
char c;
int done=FALSE;

while (!done)
{
	puts("\nAktienportfolio\n");
	puts("N - Neue Aktie\n");
	puts("A - Anzeige Bestand\n");
	puts("E - Ende\n");
	printf("Ihre Wahl: ");

	fflush(stdin);
	c=(char)toupper(getchar());

	switch(c)
	{
	case('N'):
		puts("Neue Aktie\n");
		write_info();
		break;
	case('A'):
		puts("Anzeige Portfolio\n");
		read_info();
		break;
	case('E'):
		puts("Ende\n");
		done=TRUE;
		break;
	default:
		puts("?");
		break;
	}
}

return 0;
}

Edited by whipsaw
<code> Tag eingefügt
  • Upvote 1
Link to comment
Share on other sites

C lebt!... :pope:

Auf jeden Fall, aber ich dachte nur mehr auf Mikrokontrollern ;)

 

Mir erschließt sich noch nicht genau der "Zweck" des Programms. Willst du eine eigene Datenbank bauen die für verschiedene Aktien die aktuellen Quotes beinhaltet?

 

Wenn ja, hat dein aktueller Code folgendes Problem: Du kannst neue Einträge hinzufügen, aber wenn du jetzt zweimal APPL hinzufügst, hast du zwei Einträge "APPL" in der DB obwohls die gleiche Aktie ist. Das auslesen/finden einer bestimmten Aktie wäre nur sehr ineffizient lösbar, dafür solltest du dir überlegen ob nicht eine interne Datenstruktur (ggf. auch nur als indizes für die offene .dat) besser wäre.

 

Das reine Einfügen der Marktpreise wär doch simpel durch einlesen zu lösen, so wie beim Namen. Du musst nur den String in einen float parsen (AFAIR muss man das nit mal in C selber coden, aber wer weiß ;).

(EDIT: man sollte den code halt genau lesen, du liest ja den Kaufpreis ein. Also vermutlich doch das automatische aktualisieren per Datenfeed oder?)

 

Oder willst du die Werte automatisch aus dem Netz ziehen? Das ist dann eine deutliche Ecke komplexer... Schonmal HTTP Requests in C gebaut?

Link to comment
Share on other sites

C läuft sogar ab und an noch durch die Straßen, aber nur heimlich, wenn es dunkel wird :ph34r:

 

Grundgedanke des Programms ist eigentlich folgender:

 

Ich füge per Eingabe verschiedene, von mir (nur mal theoretisch jetzt) gekaufte Aktien ein und kann direkt an meinem Rechner, ohne Suche im Netz, sonstige Programme oder das Aufschlagen der Tageszeitung etc. sehen wie meine Aktie momentan steht, indem ich nach ihr suche, wenn ich gerade Lust darauf habe. (Dann sieht man ja, den Kaufpreis, für den man sie gekauft hat und bei wieviel sie eben im Moment steht.) Ist zwar per Eingabeaufforderungs-Fenster ziemlich primitiv, aber in C wohl (leider) nicht anders möglich. Wie genau ich die Daten allerdings per Detenfeed aktualisieren kann ist mir absolut unklar, da ich mich selbst wohl noch als Einsteiger in die Programmierung bezeichnen kann und schon glücklich bin, wenn das Programm so in etwa das macht, was ich möchte

Früher sah das nämlich so aus: Ich :notaclue: vs. :hihi: Computer.

 

Du kannst neue Einträge hinzufügen, aber wenn du jetzt zweimal APPL hinzufügst, hast du zwei Einträge "APPL" in der DB obwohls die gleiche Aktie ist.

 

Wieso sollte ich zwei mal die selbe Aktie hinzufügen? Gut, wenn man mal vergisst was für Aktien man gekauft hat...das sollte aber im Normalfall nicht passieren, oder? :biggrin:

 

Schonmal HTTP Requests in C gebaut?

 

Nein, wie gesagt - ich arbeite mich gerade erst in die ganze Materie ein.

Link to comment
Share on other sites

Wieso sollte ich zwei mal die selbe Aktie hinzufügen? Gut, wenn man mal vergisst was für Aktien man gekauft hat...das sollte aber im Normalfall nicht passieren, oder? :biggrin:

Stimmt, ich dachte zuerst du willst die Eingabe der aktuellen Werte analog zum einfügen der Aktien machen, und das führt dann zu Problemen.

 

Abgesehen von der Frage wo du die aktuellen Marktdaten herkriegst (das is vermutlich noch ein bissl zu advanced), überleg dir erstmal wie du die Werte in der DB ändern würdest.

Zu Übungszwecken kannst du zB einen zusätzlichen Befehl einfügen mit dem du die aktuellen Marktwerte für eine Aktie per commandline eingibst. Wenn das funktioniert (also Änderung bestehender DB-Einträge), kommt der Punkt löschen von Einträgen (was wenn du eine Position schließt?).

 

Wenn du diese Punkte erfolgreich implementiert hast, kannst das Problem der "automatischen" Kurswertaktualisierung angehen. Hier wäre das einfachste vermutlich die Werte von Yahoo Finance oder Google zu holen, und das machst du am einfachsten über einen HTTPRequest (da hilft dir Google sehr viel weiter ;)

 

Vor allem als Anfänger würd ich mich zuerst auf die DB konzentrieren (wenn du sie schon selber bauen willst, was für Übungszwecke sicher sehr gut ist), weil du da sehr viel lernen kannst. Das Thema HTTPRequest etc. ist dann doch schon eher fortgeschritten und erfordert einiges an Grundwissen über Sockets etc. Ist dann zum lernen der Dinge sicher gut, aber ich würds wie gesagt Schritt für Schritt machen. Erst gehen, dann laufen.

 

und zur GUI: das geht mit C sehr wohl, aber is ein stückl weg vom Anfängerlevel (zumindest ohne die richtigen Programme)

 

C läuft sogar ab und an noch durch die Straßen, aber nur heimlich, wenn es dunkel wird

Ich hab erst gestern C geschrieben was den ganzen Tag in der Straße liegen wird/soll... aber wie gesagt versteckt in den Katakomben der Embedded System Programmierung... ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...