wie ohlc Candlestick mit Datetime in Matplotlib plotten?

9

Ich muss Handelsdaten alle 5 Minuten (eine Kerze) plotten

Hier ist was ich bisher habe:

%Vor%

Und es sieht so aus:

Ich muss es verbessern:

  1. Die blaue Markierung zeigt an, dass xticks mit int angezeigt wird. Ich möchte, dass sie in datetime format sind.

  2. Die rote Markierung zeigt den x-Wert in der Statusleiste an. Ich möchte das auch in datetime format haben.

Hier sind die quotes -Demodaten:

%Vor%     
dindom 31.03.2016, 13:18
quelle

2 Antworten

9

Hier ist ein Code, der funktioniert.

Zuerst konvertieren wir den Zeitstempel in ein Datetime-Objekt mit datetime.datetime.fromtimestamp .

Dann setzen wir die Tick-Orte mit einem ticker.MaxNLocator .

Ich habe dann eine Funktion erstellt, um an ticker.FuncFormatter zu füttern, um das datetime -Objekt als Hilfsstrichsbeschriftung zu verwenden, und den Integer-Wert des Ticks zu verwenden, um die zuvor erstellte xdate -Liste zu indexieren.

Die try... except -Klausel ist dort vorhanden, falls es in Ihrem quotes -Array ein Häkchen hinter dem letzten Zeitstempel gibt. In diesem Fall würde die Funktion fehlschlagen.

Ich habe auch autofmt_xdate() hinzugefügt, um die Ticks zu drehen, und tight_layout() , um Platz für sie zu schaffen

%Vor%

    
tom 31.03.2016, 13:50
quelle
1

Sie sollten den Datumsstempel in Ihrem Array zuerst in datetime-Objekt konvertieren und dann mit date2num konvertieren.

Wie in Ссылка

angegeben

matplotlib.finance.candlestick_ochl (ax, Anführungszeichen , width = 0.2, colorup = 'k', colordown = 'r', alpha = 1.0)

Anführungszeichen : Sequenz von (Zeit, Öffnen, Schließen, Hoch, Niedrig, ...) Sequenzen

Solange die ersten 5 Elemente diese Werte sind, kann der Datensatz so lang sein, wie Sie möchten (z. B. kann er Volumen speichern).

time muss im Format float days sein - siehe date2num

%Vor%     
alec_djinn 31.03.2016 13:48
quelle

Tags und Links