Ich habe in Python ein Programm erstellt, das FX-CSV-Daten liest und eine große Anzahl von Diagrammbildern erstellt

Über diesen Artikel

FX-Vorhersagen in Deep Learning (CNN) treffen Aus CSV-Daten (Datum und Uhrzeit, Eröffnungspreis, Hochpreis, Niedrigpreis, Schlusskurs werden beschrieben) Ich möchte eine große Anzahl von Diagrammbildern erzeugen.

Ergebnisse

Erstellen Sie das folgende Diagrammbild aus CSV. image.png

Informationen zur CSV-Datei

Die CSV-Datei ist ein stündlicher Balken von USDJPY. (Von Januar 2007 bis September 2020) Wenn Sie keine stündlichen CSV-Daten haben, lesen Sie bitte diesen Artikel . Der Inhalt von CSV ist wie folgt. Es gibt mehr als 80.000 Zeilen. image.png

Code

Der Code ist unten.

import matplotlib.pylab as plt
import pandas as pd
import numpy as np

def make_sma(parab, arr=None):
    """
Funktionsbeschreibung: Fügt dem als Argument empfangenen Array eine durchschnittliche Bewegungslinie hinzu.
    parab:Zeitraum
    arr:Array bestehend aus Datum und Uhrzeit, Öffnungspreis, Hochpreis, Niedrigpreis, Schlusskurs
    """
    row = arr.shape[1] #Ermitteln Sie die Anzahl der Spalten in einem Array
    arr = np.c_[arr, np.zeros((len(arr),1))] #Spalte hinzufügen
    for i in range(parab, len(arr)):
        tmp = arr[i-parab+1:i+1,4].astype(np.float) #Geben Sie die Nummer innerhalb des Zeitraums ein
        arr[i,row] = np.mean(tmp) #Geben Sie den Wert des gleitenden Durchschnitts ein

    return arr

def dataframe_to_img(chart_range, img_name, df=None):
    """
Funktionsbeschreibung: DataFrame in Image konvertieren und speichern.
    chart_range:DataFrame-Bereich
    img_name:Bildspeicherziel
    df:Zu zeichnender DataFrame
    """
    df = df[0:chart_range]

    plt.figure()
    df.plot(legend=None) #Legende löschen
    plt.axis('off') #Randentfernung
    plt.tick_params(labelbottom=False,
                    labelleft=False,
                    bottom=False,
                    left=False) #Randentfernung
    plt.box(False) #Randentfernung
    plt.savefig(img_name,bbox_inches="tight") #Ränder entfernen und speichern
    plt.close('all')


#Laden Sie csv in ein Array
arr = np.loadtxt(r'CSV-Datei', delimiter=",", skiprows=1, dtype='object') 

#Technische Indikatoren hinzugefügt
arr = make_sma(parab=25, arr=arr)

#In DataFrame konvertieren
col_name = ['Date',"Open","High","Low","Close","SMA"]
df = pd.DataFrame(arr,columns=col_name)

#In DataFrame konvertieren und Bild speichern
df = df[df!=0].dropna() #Zeile 0 löschen
df = df[['Close','SMA']] #Nur die Spalten, die im Diagramm gezeichnet werden sollen
df = df.astype('float') #In Float umwandeln

chart_range = 360

for i in range(20):
    try:
        img_name = str(i) + '.png' #Bildspeicherziel
        dataframe_to_img(chart_range, img_name, df=df[i:chart_range+i])
    except IndexError:
        pass

#DataFrame wird ebenfalls gespeichert, da es später als korrektes Antwortetikett verwendet wird.
df.to_csv(r'tarintest_labels.csv',encoding='utf_8_sig')

Eine Beschreibung des Codes. Laden Sie zuerst die CSV mit numpy.

Dann mit arr = make_sma (parab = 25, arr = arr), Fügen Sie arr eine gleitende Durchschnittslinie hinzu. Die Periode der gleitenden Durchschnittslinie wird durch parab angegeben. Wenn Sie Langzeitzeilen wie 75 und 200 anstelle von 25 hinzufügen möchten, Sie können es hinzufügen, indem Sie den Wert von parab ändern und hinzufügen.

Nach dem Hinzufügen der technischen Indikatoren Mit df = pd.DataFrame (arr, column = col_name) Konvertieren Sie arr in DataFrame.

chart_range = 360 ist der Bereich der anzuzeigenden Diagramme. Diesmal handelt es sich um eine 1-stündige CSV. Wenn es sich also um 360 handelt, wird sie 360 Stunden lang angezeigt.

Übergeben Sie schließlich in der for-Anweisung den DataFrame an die Funktion dataframe_to_img und speichern Sie ihn nacheinander. dataframe_to_img verwendet matplotlib. Grenzen usw. werden gelöscht, weil sie das Lernen beim tiefen Lernen beeinträchtigen.

Speichern Sie nach der Ausgabe des Bildes den DataFrame als CSV. Dies dient dazu, es als korrektes Antwortetikett für tiefes Lernen umzuleiten.

Bestätigung

Stellen Sie sicher, dass das Bild gespeichert ist. image.png

Diesmal nur eine einfache gleitende Durchschnittslinie, Es ist auch möglich, das Bollinger-Band und die Ichimoku-Balance-Tabelle anzuzeigen.

Wenn Sie es hilfreich finden, verwenden Sie bitte LGTM. Es wird das Update fördern.

Recommended Posts

Ich habe in Python ein Programm erstellt, das FX-CSV-Daten liest und eine große Anzahl von Diagrammbildern erstellt
Ich habe in Python ein Programm erstellt, das die 1-Minuten-Daten von FX auf eine beliebige Zeit (1 Stunde usw.) ändert.
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich möchte ein Programm ausführen und verteilen, das die Größe von Bildern in Python3 + Pyinstaller ändert
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Programm, das die CSV-Daten der Transaktionshistorie der SBI Securities-Aktie zusammenfasst [Python3]
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
[Python] Erstellen eines GUI-Tools, das die CSV von Temperaturanstiegsdaten in Excel automatisch verarbeitet
Python-Programm, das täglich Tweets mit bestimmten Schlüsselwörtern sammelt und in CSV speichert
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Wie erstelle ich eine große Menge an Testdaten in MySQL? ??
[Python] Ein Programm, das Treppen mit # erstellt
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
[IOS] Ich habe ein Widget erstellt, das den Trend von Qiita in Pythonista3 anzeigt. [Python]
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
[Python] Ich habe einen Web-Scraping-Code erstellt, der automatisch den Nachrichtentitel und die URL von Nihon Keizai Shimbun erfasst.
Python-Skript, das SQL-Dateien liest, BigQuery ausführt und CSV speichert
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
Veröffentlichen und Verwenden eines Programms, das automatisch Gesichtsbilder bestimmter Personen sammelt
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Ein Programm, das von Python zu einem bestimmten Zeitpunkt eine feste E-Mail-Menge sendet
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe eine Klasse in Python3 und Java geschrieben
Ein Programm, das doppelte Anweisungen in Python entfernt
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Ich habe ein Docker-Image erstellt, das RSS liest und automatisch regelmäßig twittert, und es veröffentlicht.
[Python] Ein Programm, das die kürzeste Anzahl von Schritten in einem Spiel findet, das Wolken überquert
Ich habe ein gestapeltes Balkendiagramm mit matplotlib von Python erstellt und eine Datenbeschriftung hinzugefügt
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
[Python / C] Ich habe versucht, ein Gerät zu erstellen, das den Bildschirm eines PCs drahtlos aus der Ferne scrollt.
[Python] Ein Programm, das die Anzahl der Täler zählt
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Shell-Programm, das in Vielfachen von 3 aho wird
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Python-Programm, das ical-Daten in Text konvertiert
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Beispiel für das Aggregieren einer großen Menge von Zeitreihendaten mit Python in einer kleinen Speicherumgebung mit einer angemessenen Geschwindigkeit
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
Python-Skript, das MLB-Spieldaten im Wert von 15 Jahren in 10 Minuten in MySQL speichert (Baseball Hack!)
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Ein Memo, das mit Python & Spark Daten aus dashDB liest
Ich habe versucht, mit Python Modebilder und Textsätze zu [kratzen].
Python-Programm von "Buch, das schwieriges Programmieren leicht lehrt"
Ein Allzweckprogramm, das Linux-Befehlszeichenfolgen mit Python formatiert