Dynamische Kursdaten-URLs

Alles gut, einen nützlichen Hinweis von zwei insgesamt ist ne gute Quote für ein Post kurz vorm Schlafgehen :grinning:

Also Today.java sieht jetzt insgesamt so aus:

package name.abuchen.portfolio.online.impl.variableurl.macros;

import java.time.LocalDate;
// ADDED LocalTime and ZoneOffset
import java.time.LocalTime;
import java.time.ZoneOffset;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAmount;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import name.abuchen.portfolio.model.Security;
import name.abuchen.portfolio.online.impl.variableurl.VariableURLConstructor;

public class Today implements Macro
{
    private static final Pattern MACRO = Pattern.compile("TODAY(:([^:]*)(:([PYMWDpymwd0123456789-]*))?)?"); //$NON-NLS-1$

    private final DateTimeFormatter formatter;
    private final TemporalAmount delta;
    // ADDED the variable ut
    private final boolean ut;

    public Today(CharSequence input)
    {
        Matcher matcher = MACRO.matcher(input);

        if (!matcher.matches())
            throw new IllegalArgumentException();

        String p = matcher.group(2);
        // ADDED the definition of ut and changed the if condition
        ut = (p.equals("unixtime")) ? true : false;
        if (p == null || p.isEmpty() || ut)
            formatter = DateTimeFormatter.ISO_DATE;
        else
            formatter = DateTimeFormatter.ofPattern(p);

        String d = matcher.group(4);
        if (d == null || d.isEmpty())
            delta = Period.ZERO;
        else
            delta = Period.parse(d);
    }

    @Override
    public VariableURLConstructor getVariableURLConstructor()
    {
        return null;
    }

    @Override
    // MODIFIED the resolve method
    public CharSequence resolve(Security security)
    {
        LocalDate ld = LocalDate.now().plus(delta);
        if (ut == true)
            return String.valueOf( ld.toEpochSecond(LocalTime.parse("00:00:00"), ZoneOffset.of("Z")));
        else
            return formatter.format(ld);
    }
}

Hast du eine Ahnung wie ich das nun offiziell als Feature Vorschlag einreichen kann ohne einen github Account erstellen und mich da erst reinfuchsen zu müssen? Kenn mich auf github nämlich eher nur passiv aus.

1 Like

Mit Version 0.56.3 unterstützt das Today Makro jetzt “unixtime”, z.B. {TODAY:unixtime:-P3M} Vielen Dank @kingbtcvl für die Contribution :clap:

Hallo zusammen,
bei OnVista wird ja neben dem Instrument noch eine Notation ID verwendet, die bspw. den Handelsplatz kodiert. Ich habe dafür eine neue Eigenschaft bei den Wertpapieren angelegt und würde deren Wert gerne im dynamischen URL für historische Kurse verwenden. Ist da eine Referenz über {SPALTENNAME} grundsätzlich möglich? Ich frage so dumm, weil das bei mir zu keinerlei Ergebnissen führt. :wink:
Vielen Dank vorab!
Beste Grüße
Johannes

Es gehen nur definierte Felder, siehe Kursdaten laden - Portfolio Performance Handbuch

Vielen Dank für die schnelle Antwort, @Rafa, und schade. :wink:

Beste Grüße
Johannes

Hallo! Wie oft muss man PP öffnen, wenn man stets aktuelle Kurse haben will? Ich öffne PP vielleicht 4x im Jahr und habe nun ein ziemliches Mass.
Ich wollte mit dem Url von Ariva einige hirstorische Kurse rein holen, aber es wird mir im PP mit Chart nicht angezeigt.

oder muss ich dann morgen nochmal gucken? Wenn ich dieses Kürzel verwende, gehen die Kurse nur ein Monat zurück:
{DATE:yyyy-MM-32}

zb ᐅ MercadoLibre Historische Kurse | Historische Werte | ARIVA.DE

Mit deinem unten erwähnten Kürzel hast du dir die Antwort bereits selbst gegeben. Einmal im Monat.

wieso wird der Kurs bei solchen Daten (obwohl Dezimal auf 4 runden eingestellt ist, auf volle Euro gerundet)? ich hab nun hier 5 und 6 Euro stehen :wink:

Date,Open
2022-03-30,5,48
2022-03-31,5,86

Kursdaten werden mWn nur geparst und nicht manipuliert. Die Anzeige für Dezimalstellen müsste sich auf Bruchstücke bei Wertpapieren beziehen.

Viele Grüße

1 Like

Falls das aus einer csv ist: Der Separator wäre dann ein Komma, Du hast also ein Datum, ein Wert, und noch einen Wert.

1 Like