AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem bei Formel zur Aktienanalyse

Ein Thema von hincapie · begonnen am 22. Mär 2006 · letzter Beitrag vom 27. Mär 2006
Antwort Antwort
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#1

Problem bei Formel zur Aktienanalyse

  Alt 22. Mär 2006, 16:33
Also, ich habe mich mal etwas näher mit der technischen Analyse von Aktienkursen beschäftigt.
z. B. Momentum = Berechnung aus der Differenz des heutigen Kurses zum Kurs vor z.B. 30 Tagen

Folgende Function berechnet das Momentum:
Delphi-Quellcode:
function TForm12.Momentum(Tage: integer): integer;
var
  value, value1: integer;
begin
  Value := Table3.FieldByName('Kurs').AsInteger;
  Table3.MoveBy(-Tage);
  Value1 := Table3.FieldByName('Kurs').AsInteger;
  Table3.MoveBy(Tage);
  result := Value - Value1;
end;
Die Darstellung des Momentums in einem TChart:
Delphi-Quellcode:
  Table3.First;
  Table3.MoveBy(Anzahl);
  for i := 0 to RecCount -1 do
  begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end;
Dabei ist Anzahl die Zahl der Tage für die Berechnung des Momentums.
Soweit funktioniert auch anscheinend alles.

Mein Problem sind aber nun die Kurswerte am Ende der Tabelle.
(Siehe Anlage).

Die Berechnung funzt offenbar nicht mehr richtig, wenn die Anzahl der Kurse in der Table3 kleiner sind als die Variable Anzahl, d.h. die
Zahl der in der function momentum angegebenen Tage.

Bloß wie kann ich das ändern, dass auch für die letzten Werte eine korrekte Berechnung durchgeführt wird?
Miniaturansicht angehängter Grafiken
momentum_875.jpg  
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Problem bei Formel zur Aktienanalyse

  Alt 22. Mär 2006, 18:15
Zitat von hincapie:
Also, ich habe mich mal etwas näher mit der technischen Analyse von Aktienkursen beschäftigt.
z. B. Momentum = Berechnung aus der Differenz des heutigen Kurses zum Kurs vor z.B. 30 Tagen
Moin!


Delphi-Quellcode:
  Table3.First;
  Table3.MoveBy(Anzahl);
  // an Ende sonst so oft wie Anzahl gegen den letzten Satz
  for i := RecCount-1-Anzahl to RecCount -1 do
  begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end;
besser so:

Delphi-Quellcode:
  Table3.First;
  Table3.MoveBy(Anzahl);
  while not Table3.eof do begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end; // while
wie immer ungetestet

Gruß

Malte
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#3

Re: Problem bei Formel zur Aktienanalyse

  Alt 23. Mär 2006, 08:15
Hhhmm, ist schon ein bißchen was, aber noch nicht das was ich suche.
Bei diesem Code:

Zitat von Frank Borland:
Delphi-Quellcode:
  Table3.First;
  Table3.MoveBy(Anzahl);
  // an Ende sonst so oft wie Anzahl gegen den letzten Satz
  for i := RecCount-1-Anzahl to RecCount -1 do
  begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end;
kommt folgendes Ergebnis raus:
siehe Anhang ersterversuch.jpg

Der zweite Vorschlag ist schon besser

Zitat von Frank Borland:
Delphi-Quellcode:
  Table3.First;
  Table3.MoveBy(Anzahl);
  while not Table3.eof do begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end; // while
siehe Bild zweiterversuch.jpg

Aber die ideale Lösung ist das noch nicht.
Wie schaffe ich es, dass die Kurve mit vernünftigen Werten bis zum Ende
fortgeführt wird?
Miniaturansicht angehängter Grafiken
zweiterversuch_467.jpg   ersterversuch_190.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#4

Re: Problem bei Formel zur Aktienanalyse

  Alt 23. Mär 2006, 16:15
Also:
normalerweise müßte die Variable Anzahl doch, wenn nicht mehr genügend Datensätze in Table3 vorhanden sind, entsprechend auf die Zahl der noch auszulesenden Datensätze verringert werden, oder?
Bloß wie stell ich das in einer Formel dar?
Immer einen Zähler (=Gesamtzahl der Datensätze von Table3) mitlaufen lassen (d.h. immer weiter verringern lassen) und mit Anzahl vergleichen?
Und wenn der Zähler kleiner ist als Anzahl, dann Anzahl entsprechend verringern?
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Problem bei Formel zur Aktienanalyse

  Alt 27. Mär 2006, 00:32
Zitat von hincapie:
Also:
normalerweise müßte die Variable Anzahl doch, wenn nicht mehr genügend Datensätze in Table3 vorhanden sind, entsprechend auf die Zahl der noch auszulesenden Datensätze verringert werden, oder?
Es kann eigentlich gar nicht schlecht enden, es sei denn, es ging schon schlecht los
Du mußt Kontrollstrukturen einfügen: Was passiert, wenn Du weniger Datensätze als "Anzahl" hast?
Ist in der Tabelle jeder Satz genau einem Datum zugeordnet und dieses auch noch aufsteigend?
Wie wird die Anzeige der x-Achse angepasst (Anzahl Sätze - "Anzahl")?


Gleichzeitig würde ich mit Zeiträumen arbeiten denn irgendwann passen die Daten auch nicht mehr auf 2 Monitore

Gruß

Malte
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#6

Re: Problem bei Formel zur Aktienanalyse

  Alt 27. Mär 2006, 06:49
Zitat von Frank Borland:
Es kann eigentlich gar nicht schlecht enden, es sei denn, es ging schon schlecht los
Du mußt Kontrollstrukturen einfügen: Was passiert, wenn Du weniger Datensätze als "Anzahl" hast?
Ist in der Tabelle jeder Satz genau einem Datum zugeordnet und dieses auch noch aufsteigend?
Wie wird die Anzeige der x-Achse angepasst (Anzahl Sätze - "Anzahl")?
Hallo,
das ist ja genau mein Problem. Nach so einer Kontrollstruktur suche ich ja!
Was soll ich machen, wenn die Anzahl der verbleibenden Datensätze kleiner ist als Anzahl?
Ich würde nun, um die Kurve einigermaßen sinnvoll zuende zu bekommen, die Variable Anzahl an die Zahl der Datensätze anpassen.
Das würde zwar etwas das Ergebnis verfälschen, aber die Berechnung würde wenigstens bis zum Ende durchgeführt werden.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Problem bei Formel zur Aktienanalyse

  Alt 27. Mär 2006, 20:01
Das while-not-eof-Konstrukt stellt sicher, daß es ein definiertes Ende gibt. Wenn aber
Anzahl>RecordCount ist mußt Du Anzahl:=RecordCount setzen um wenigstens einen Wert zu bekommen.


Delphi-Quellcode:
if (Anzahl>RecordCount)
 then Anzahl:= RecordCount;

Table3.First;
  Table3.MoveBy(Anzahl);
  while not Table3.eof do begin
    Value := Momentum(Anzahl);
    Series4.AddY(Value, Table3.FieldByName('Datum').AsString, clTeal);
    Table3.Next;
  end; // while
Die X-Achse muß RecordCount-Anzahl+1 Werte aufnehmen können.

Und wenn jeder Datensatz in Table3 genau einen Tag darstellt sollte das klappen.

Gruß


Malte
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz