Gruppen: Kunde
Beiträge: 1
|
Seit längeren verwende ich ein C++ Programm, um Kursreihen von Aktien zu exportieren. Nun würde ich gerne die Dividenden berücksichtigen, um eine Kursbereinigung/Adjustierung durchzuführen. Hintergrund ist, dass einige Indikatoren komlett falsche Aussagen erzeugen, wenn die Dividende nicht im Kurs berücksichtigt wird. Dies wird um so schlimmer, je höher die Dividende ist. Bsp: Bei einer Aktie (GNRC) hatte ich zuletzt eine Dividende von über 10% und nun zeigt mein Indikator einen Verkauf an, obwohl sich nichts geändert hat. Für mich wäre dies essentiell wichtig. Die Daten sind ja vorhanden, bzw können sogar manuell in den Stammdaten eingetragen werden.
Meine Frage: wie komme ich an die Dividenden dran, lt. Formelsprache bekomme ich nur die letzte Dividende, ist dies richtig?
|
Gruppen: Kunde
Beiträge: 2
|
Hallo Herr Odehnal, hier ein Beispiel, wie man auf die Dividenden und Faktoren zur Bereinigung über die COM-Schnittstelle zugreifen kann. Als Programmiersprache wird hier zwar C# verwendet, aber die grundsätzliche Herangehensweise sollte erkennbar sein. Code: public void Sample(string wpk) { TaiPan taiPan = new TaiPan();
IStammdaten stammdaten = taiPan.get_Stammdaten(wpk); // Stammdaten
IDividendeListe dividendeListe = stammdaten.DividendeListe; // Daten der letzten Jahre IFaktorListe faktorListe = taiPan.get_FaktorListe(wpk); // Faktorliste der Splits
for (int i = 1; i <= dividendeListe.Count; i++) // Der Index im COM-Interface beginnt bei 1 (eins)! { IDividende dividende = stammdaten.DividendeListe.Item(i); double bereinigteDividende = dividende.Wert; const double NULL_VALUE = -2.9000001582776697E+36; // Magic-Value für "kein Wert" if (bereinigteDividende <= NULL_VALUE) bereinigteDividende = 0.0d; // Faktoren der Dividenden berücksichtigen for (int j = faktorListe.Count; j > 0; j--) { IFaktor faktor = faktorListe.Item(j); if (dividende.Datum <= faktor.Datum) bereinigteDividende *= faktor.Faktor; }
// Die Variable "value" enthält jetzt die bereinigte Dividende // DoSomething(value); System.Diagnostics.Debug.Print(string.Format("Die Dividende von {0} für das Jahr {1} beträgt bereinigt {2}.", dividende.Wert, dividende.Datum, bereinigteDividende)); } }
|