function chart(filename)
%CHART Plots stock prices.

% Daten einlesen; erste Zeile ignorieren
X = dlmread(filename, '\t', 1, 0);
if size(X, 1) < 1 || size(X, 2) ~= 6
    error('Invalid file format.');
end

% Datum konvertieren und Zeitraum der Daten bestimmen
year   = floor(X(:,1)/10000);   %20081130 -> 2008.1130
month  = mod(floor(X(:,1)/100), 100);   %20081130 -> 200811 -> 11
day    = mod(X(:,1), 100);  % 20081130 -> 30
X(:,1) = datenum(year, month, day); % konvertiert Datum in Integer
min_date = min(X(:,1));
max_date = max(X(:,1));

% fehlende Handelstage mit Schlusskurs des Vortages füllen und Reihenfolge
% umkehren
n = max_date - min_date + 1;
D = zeros(n, 6);
D(X(:,1) - min_date + 1, :) = X;    % bekannte werte an richtigen stellen 
                                    %einfügen, durch die indizierung wird
                                    %die Reihenfolge umgedreht [92,91,...]
missing = find(D(:,1) == 0); % finde fehlende werte
for j = 1:length(missing)
    i = missing(j); % index des fehlenden wertes
    D(i,1)   = D(i - 1,1) + 1; % neues datum ist altesDatum + 1
    D(i,2:5) = D(i - 1,5); % füge die werte des vortages ein
end
%D = X;

% Zeitreihe plotten; Fenster-Handle speichern um später Legende 
% hinzuzufügen
high = plot(D(:,1), D(:,3), 'b-');
hold on;
[foo, plottitle] = fileparts(filename);
title(plottitle);
datetick('x');
xlabel('Date');
ylabel('Peak Price');

% 8 Zeitpunkte mit dem höchsten Umsatzvolumen plotten
[foo, i] = sort(D(:,6), 'descend'); %sortiere absteigend
marker = plot(D(i(1:8),1), D(i(1:8),3), 'rx');

% Legende hinzufügen
legend([high, marker], {'Price', 'Trading volume peaks'}, ...
    'Location', 'NorthEast');
