Trading-Stocks.de

Normale Version: Einfacher Dividendenkalender
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Für US-amerikanische Unternehmen.

[attachment=2654]

Ihr meldet euch bei https://iexcloud.io/ an. Dort wählt ihr "Free" aus.

[attachment=2652]

und lasst euch ein Token geben. Zu finden unter

[attachment=2653]

Das Token fügt ihr in den Quelltext ein:

[attachment=2655]

Die Dividenden werden automatisch in den Kalender eingetragen.

Beispiel für Rückgabewert:

[attachment=2656]

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.
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).
[attachment=2672]
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

Banker

Coole Sache. Vielen Dank!
(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äß ?
(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:

[attachment=2686]

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.
(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 ?
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.
(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.
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...
@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 ?
Seiten: 1 2 3