Beiträge: 114
Themen: 10
Registriert seit: Nov 2021
Status:
offline
Bewertung:
130
[ Vote]
Einfacher Dividendenkalender | 10.06.2019, 12:09
Für US-amerikanische Unternehmen.
Ihr meldet euch bei https://iexcloud.io/ an. Dort wählt ihr "Free" aus.
und lasst euch ein Token geben. Zu finden unter
iex_token.png (Größe: 12,33 KB / Downloads: 317)
Das Token fügt ihr in den Quelltext ein:
token.png (Größe: 5,31 KB / Downloads: 316)
Die Dividenden werden automatisch in den Kalender eingetragen.
Beispiel für Rückgabewert:
Das Template liegt hier, mit Beispielwerten aus den Champions der David-Fish-Liste.
Die Doku der API ist übersichtlich:
https://iexcloud.io/docs/api/
Mit den Daten wird z.B. die David-Fish-Liste erstellt.
Viel Fraß beim Schielen.
Beiträge: 114
Themen: 10
Registriert seit: Nov 2021
Status:
offline
Bewertung:
130
[ Vote]
RE: Einfacher Dividendenkalender | 12.06.2019, 08:05
Und hier noch eine Beschreibung, wie die Daten, die im JSON-Format daherkommen, direkt verarbeitet werden können. Die Ausgabe ist dadurch schneller:
Ihr ladet euch von https://github.com/VBA-tools/VBA-JSON das File JsonConverter.bas runter und bindet es als Modul in die vorhandene Datei ein. Im VBA-Editor aktiviert ihr die "Microsoft Scripting Runtime".
(Einfach draufklicken, wenn es matschig aussieht).
Anschließend erstellt ihr ein neues Modul und bindet folgenden Kot ein (vorher noch das Tabellenblatt in "Dividenden" umbenennen).
Code: Sub Dividendenabfrage()
Dim jsonText As String
Dim jsonObject As Object, item As Object
Dim ws As Worksheet
Dim Zaehler As Integer
Set ws = Worksheets("Dividenden")
' *******************************************************************
Dim urlText As String
Dim urlText2 As String
Dim url_1 As String
Dim Datum As Date
Dim Monat As Integer
Dim Dividende As Double
Dim JahrSpalte As Integer
Zaehler = 6
ws.Range("B6:M1000").ClearContents ' sauber machen
JahrSpalte = 2 ' falls die Spalten erweitert werden, hier die aktuelel Spalte des Jahres eintragen. Im Beispiel ist das Spalte 2. Das Jahr steht an B3.
aktjahr = ws.Cells(3, JahrSpalte).Value
Do While Not IsEmpty(ws.Cells(Zaehler, 1).Value)
Ticker = ws.Cells(Zaehler, 1).Value
' ---------- Token ------------------
Token = "<hier Token einfügen>"
' ---------- Token ------------------
url_1 = "https://cloud.iexapis.com/stable/stock/" + Ticker + "/dividends/1y?token=" + Token
Set AB = CreateObject("MSXML2.XMLHTTP")
AB.Open "GET", url_1, False
AB.Send
'url content
urlText = AB.ResponseText
urlText2 = AB.ResponseBody
' *******************************************************************
jsonText = urlText
Set jsonObject = JsonConverter.ParseJson(jsonText)
For Each item In jsonObject
Datum = item("paymentDate")
Dividende = item("amount")
If Year(Datum) = aktjahr Then
Monat = Month(Datum)
ws.Cells(Zaehler, JahrSpalte + Monat - 1).Value = Dividende
End If
Next
Zaehler = Zaehler + 1
Loop
End Sub
Das war es auch schon. Nicht vergessen, das (oder den?) Token einzubinden.
Eine Roh-Datei sieht z.B. so aus:
Code: [{"exDate":"2019-07-03","paymentDate":"2019-08-05","recordDate":"2019-07-05","declaredDate":"2019-06-05","amount":0.18,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend $0.18 Per Share\t","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-04-03","paymentDate":"2019-05-06","recordDate":"2019-04-04","declaredDate":"2019-03-06","amount":0.18,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend $0.18 Per Share ","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-01-02","paymentDate":"2019-02-04","recordDate":"2019-01-03","declaredDate":"2018-12-18","amount":0.18,"flag":"Increase","currency":"USD","description":"ABM Industries Hikes Quarterly Dividend 2.86%","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-10-03","paymentDate":"2018-11-05","recordDate":"2018-10-04","declaredDate":"2018-09-06","amount":0.175,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend of $0.175 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-07-03","paymentDate":"2018-08-06","recordDate":"2018-07-05","declaredDate":"2018-06-06","amount":0.175,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend of $0.175 Per Share","frequency":"Quarterly","date":"2019-06-12"}]
Sie wird in ihre Items zerlegt und die Werte den entsprechenden Items zugewiesen.
Wer mehr Informationen raussaugen möchte, muss die Zeilen
Code: Datum = item("paymentDate")
Dividende = item("amount")
entsprechend erweitern
RE: Einfacher Dividendenkalender | 12.06.2019, 09:06
Coole Sache. Vielen Dank!
Beiträge: 2.143
Themen: 17
Registriert seit: Nov 2018
Status:
offline
Bewertung:
1.053
[ Vote]
RE: Einfacher Dividendenkalender | 12.06.2019, 17:42
(12.06.2019, 08:05)Beth schrieb: ........
habe mir die API mal angeschaut, an und für sich ganz ok, sie wirft die letzten 4 Dividendentermine raus -
bzw. den aktuellen auch schon vorher, nach dem Deklarationsdatum.
Habe das mal exemplarisch im Browser direkt für CTL bspw. gemacht:
Code: [{"exDate":"2019-05-31","paymentDate":"2019-06-14","recordDate":"2019-06-03","declaredDate":"2019-05-23","amount":0.25,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.25 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-03-11","paymentDate":"2019-03-22","recordDate":"2019-03-12","declaredDate":"2019-03-01","amount":0.25,"flag":"Decrease","currency":"USD","description":"CenturyLink Cuts Quarterly Dividend 53.7%","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-11-23","paymentDate":"2018-12-07","recordDate":"2018-11-26","declaredDate":"2018-11-14","amount":0.54,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.54 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-08-30","paymentDate":"2018-09-14","recordDate":"2018-08-31","declaredDate":"2018-08-21","amount":0.54,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.54 Per Share","frequency":"Quarterly","date":"2019-06-12"}]
Ich hätte sowas ja gerne für die "Zukunft" - dann könnte ich mir für meine Software eine Übersicht basteln wann die Zahltermine sind, so hätte man grafisch bspw. gleich für die einzelnen Monate etwas wo man sieht was "normalerweise" in dem Monat käme ohne Kürzungen. Ist ja für den Dividendenstrom an und für sich
nicht so verkehrt.
Wie ist denn das - kann man die Monate so fortschreiben oder verändern die sich bei den einzelnen Firmen erfahrungsgemäß ?
Beiträge: 114
Themen: 10
Registriert seit: Nov 2021
Status:
offline
Bewertung:
130
[ Vote]
RE: Einfacher Dividendenkalender | 12.06.2019, 21:15
(12.06.2019, 17:42)fahri schrieb: habe mir die API mal angeschaut, an und für sich ganz ok, sie wirft die letzten 4 Dividendentermine raus -
bzw. den aktuellen auch schon vorher, nach dem Deklarationsdatum.
Habe das mal exemplarisch im Browser direkt für CTL bspw. gemacht:
Code: [{"exDate":"2019-05-31","paymentDate":"2019-06-14","recordDate":"2019-06-03","declaredDate":"2019-05-23","amount":0.25,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.25 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-03-11","paymentDate":"2019-03-22","recordDate":"2019-03-12","declaredDate":"2019-03-01","amount":0.25,"flag":"Decrease","currency":"USD","description":"CenturyLink Cuts Quarterly Dividend 53.7%","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-11-23","paymentDate":"2018-12-07","recordDate":"2018-11-26","declaredDate":"2018-11-14","amount":0.54,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.54 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-08-30","paymentDate":"2018-09-14","recordDate":"2018-08-31","declaredDate":"2018-08-21","amount":0.54,"flag":"No Change QoQ","currency":"USD","description":"CenturyLink Declares Quarterly Dividend of $0.54 Per Share","frequency":"Quarterly","date":"2019-06-12"}]
Ich hätte sowas ja gerne für die "Zukunft" - dann könnte ich mir für meine Software eine Übersicht basteln wann die Zahltermine sind, so hätte man grafisch bspw. gleich für die einzelnen Monate etwas wo man sieht was "normalerweise" in dem Monat käme ohne Kürzungen. Ist ja für den Dividendenstrom an und für sich
nicht so verkehrt.
Wie ist denn das - kann man die Monate so fortschreiben oder verändern die sich bei den einzelnen Firmen erfahrungsgemäß ? Die Anzahl wird mit den Terminen abgeglichen. Laut API-Dok:
https://iexcloud.io/docs/api/#dividends
Aus Bequemlichkeit habe ich 1y genommen und schmeiße alles weg, was nicht dem aktuellen Jahr entspricht.
In die Zukunft geht es nicht, da weder Termin noch Höhe bekannt sind. Du kannst aber für die Zukunft einfach den letzten Wert nehmen, der dann später überschrieben wird.
Beiträge: 2.143
Themen: 17
Registriert seit: Nov 2018
Status:
offline
Bewertung:
1.053
[ Vote]
RE: Einfacher Dividendenkalender | 13.06.2019, 10:02
(12.06.2019, 21:15)Beth schrieb: In die Zukunft geht es nicht, da weder Termin noch Höhe bekannt sind. Du kannst aber für die Zukunft einfach den letzten Wert nehmen, der dann später überschrieben wird.
Ich meinte eher, ob der Turnus immer der gleiche ist erfahrungsgemäß oder ob sich die Monate mal verschieben, sonst
könnte man ja als ungefähre Vorausschau dann die Monate des Vorjahres nehmen, also bspw. Januar 2018, April 2018, Juli 2018, Oktober 2018
und die dann in 2019 mal so "festlegen" und jeweils mit der letzten oder aktuellsten Dividende errechnen.
Wenn dann mal erhöht wird kann man ja jederzeit anpassen,...so war der Gedanke.
Dann hat man aber grob eine Übersicht wann was in dem Jahr kommt.
Ist halt nur die Frage ob sich die Monate oft ändern,...da habe ich keine Erfahrungen mit ?
Beiträge: 2.946
Themen: 3
Registriert seit: Nov 2018
Status:
offline
Bewertung:
1.090
[ Vote]
RE: Einfacher Dividendenkalender | 13.06.2019, 10:14
Kommt schon vor das sich der Termin mal von Ende des einen Monats auf Anfang des nächsten verschiebt, erinnere mich nicht an die konkrete Firma aber bin mir sicher das schon gesehen zu haben.
__________________
Beiträge: 114
Themen: 10
Registriert seit: Nov 2021
Status:
offline
Bewertung:
130
[ Vote]
RE: Einfacher Dividendenkalender | 13.06.2019, 10:19
(13.06.2019, 10:02)fahri schrieb: Ich meinte eher, ob der Turnus immer der gleiche ist erfahrungsgemäß oder ob sich die Monate mal verschieben, sonst
könnte man ja als ungefähre Vorausschau dann die Monate des Vorjahres nehmen, also bspw. Januar 2018, April 2018, Juli 2018, Oktober 2018
und die dann in 2019 mal so "festlegen" und jeweils mit der letzten oder aktuellsten Dividende errechnen.
Wenn dann mal erhöht wird kann man ja jederzeit anpassen,...so war der Gedanke.
Dann hat man aber grob eine Übersicht wann was in dem Jahr kommt.
Ist halt nur die Frage ob sich die Monate oft ändern,...da habe ich keine Erfahrungen mit ? Der Turnus ist meistens der Gleiche. Selten werden mal Sonderdividenden ausgeschüttet oder die Auszahlung vorverlegt. In diesem Fall lässt sich schon mal voraus die letzte Dividende eintragen. Im Code oben muss die Zeile
Code: ws.Range("B6:M1000").ClearContents ' sauber machen
entfernt werden. Beim Eintragen der Dividende muss darauf geachtet werden, dass der erste Eintrag terminlich der letzte ist, das heißt, es geht rückwärts (ergibt sich so aus der Tabelle). Dieser erste Betrag wird abgefangen und als Monat + 3 in die Zukunft fortgeschrieben, wobei darauf geachtet wird, dass Monat + 3 < 12 ist. Bei Sonderdividenden oder abweichenden Terminen muss der vorausgesagte Eintrag manuell entfernt werden. Eine Unterscheidung wäre hier, den Eintrag farblich zu unterscheiden, z.B. durch
Code: ws.Cells(<Zeile>, <Spalte>).Font.Color = RGB(192, 0, 0)
Beim Überschreiben wird einfach die Farbe geändert
Code: ws.Cells(Zaehler, JahrSpalte + Monat - 1).Font.Color = vbBlack
Ich kann das ja mal vorbereiten.
Beiträge: 2.143
Themen: 17
Registriert seit: Nov 2018
Status:
offline
Bewertung:
1.053
[ Vote]
RE: Einfacher Dividendenkalender | 13.06.2019, 10:25
Danke - aber für mich brauchst du das nicht -
ich bastel mir alles was ich so brauche selber in ASP.Net Core und EF zu recht und hoste das bei Azure,
kostet mich keine 5 € im Monat und ich hab aus aller Welt auf allen Reisen
permanent Zugriff drauf - sowohl mit Handy als auch mit Laptop.....
Baue mir damit eben auch genau das was ich wichtig finde und brauche.
Excel habe ich für mich an den Nagel gehängt für solche Sachen, alleine schon wegen der
Kursversorgung dauerhaft....aber VB geht natürlich auch vieles mit...
Beiträge: 2.143
Themen: 17
Registriert seit: Nov 2018
Status:
offline
Bewertung:
1.053
[ Vote]
RE: Einfacher Dividendenkalender | 14.06.2019, 10:14
@Beth
hast du in der API was gefunden wie man ein Array übergeben kann, sprich nicht
jede Aktie einzeln abgefragt werden muss ? Das dauert bei meinen knapp 45 Aktien
schon über 10 Sekunden bis er alle Antworten hat....hunderte von Aktien werde ich
wohl nie haben, also ist das noch ok, aber einfacher wäre ja eigentlich ihm ein Set
von Kürzeln zu übergeben und das json dann komplett zurück zu erhalten ?
|