J'ai créé un programme en Python qui lit les données FX CSV et crée un grand nombre d'images de graphiques

À propos de cet article

Pour faire des prédictions FX dans le Deep Learning (CNN) À partir des données CSV (date et heure, prix d'ouverture, prix élevé, prix bas, cours de clôture sont décrits) Je souhaite générer un grand nombre d'images de graphiques.

Livrables

Créez l'image de graphique suivante à partir de CSV. image.png

À propos du fichier CSV

Le fichier CSV est une barre horaire de USDJPY. (De janvier 2007 à septembre 2020) Si vous ne disposez pas de données CSV horaires, veuillez consulter cet article . Le contenu du CSV est le suivant. Il y a plus de 80 000 lignes. image.png

code

Le code est ci-dessous.

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

def make_sma(parab, arr=None):
    """
Description de la fonction: ajoute une ligne de mouvement moyenne au tableau reçu comme argument.
    parab:période
    arr:Tableau composé de la date et de l'heure, prix d'ouverture, prix élevé, prix bas, prix de clôture
    """
    row = arr.shape[1] #Obtenir le nombre de colonnes dans un tableau
    arr = np.c_[arr, np.zeros((len(arr),1))] #Ajouter une colonne
    for i in range(parab, len(arr)):
        tmp = arr[i-parab+1:i+1,4].astype(np.float) #Entrez le numéro dans la période
        arr[i,row] = np.mean(tmp) #Entrez la valeur de la moyenne mobile

    return arr

def dataframe_to_img(chart_range, img_name, df=None):
    """
Description de la fonction: Convertissez DataFrame en image et enregistrez-le.
    chart_range:Gamme DataFrame
    img_name:Destination d'enregistrement de l'image
    df:DataFrame pour dessiner
    """
    df = df[0:chart_range]

    plt.figure()
    df.plot(legend=None) #Supprimer la légende
    plt.axis('off') #Suppression des frontières
    plt.tick_params(labelbottom=False,
                    labelleft=False,
                    bottom=False,
                    left=False) #Suppression des frontières
    plt.box(False) #Suppression des frontières
    plt.savefig(img_name,bbox_inches="tight") #Supprimez les marges et économisez
    plt.close('all')


#Charger le csv dans le tableau
arr = np.loadtxt(r'Fichier CSV', delimiter=",", skiprows=1, dtype='object') 

#Ajout d'indicateurs techniques
arr = make_sma(parab=25, arr=arr)

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

#Convertir en DataFrame et enregistrer l'image
df = df[df!=0].dropna() #Supprimer la ligne 0
df = df[['Close','SMA']] #Seules les colonnes à dessiner sur le graphique
df = df.astype('float') #Convertir en flottant

chart_range = 360

for i in range(20):
    try:
        img_name = str(i) + '.png' #Destination d'enregistrement de l'image
        dataframe_to_img(chart_range, img_name, df=df[i:chart_range+i])
    except IndexError:
        pass

#DataFrame est également enregistré car il sera utilisé ultérieurement comme une étiquette de réponse correcte.
df.to_csv(r'tarintest_labels.csv',encoding='utf_8_sig')

Une description du code. Tout d'abord, chargez le CSV avec numpy.

Ensuite, avec ʻarr = make_sma (parab = 25, arr = arr) ` Ajoutez une ligne moyenne mobile à arr. La période de la ligne moyenne mobile est spécifiée par parab. Si vous souhaitez ajouter des lignes à long terme telles que 75 et 200 au lieu de 25, Vous pouvez l'ajouter en modifiant la valeur de parab et en l'ajoutant.

Après avoir ajouté les indicateurs techniques, Avec `` df = pd.DataFrame (arr, columns = col_name) '' Convertissez arr en DataFrame.

`` chart_range = 360 '' est la plage de graphiques à afficher. Cette fois, il s'agit d'un CSV d'une heure, donc s'il s'agit de 360, il sera affiché pendant 360 heures.

Enfin, dans l'instruction for, passez le DataFrame à la fonction `` dataframe_to_img '' et enregistrez-le un par un. dataframe_to_img utilise matplotlib. Les frontières, etc. sont supprimées car elles interfèrent avec l'apprentissage dans l'apprentissage profond.

Après avoir sorti l'image, enregistrez le DataFrame au format CSV. Il s'agit de le détourner comme une étiquette de réponse correcte pour l'apprentissage en profondeur.

Vérification

Assurez-vous que l'image est enregistrée. image.png

Cette fois seulement une simple ligne moyenne mobile, Il est également possible d'afficher la bande de Bollinger et la table d'équilibre Ichimoku.

Si vous le trouvez utile, veuillez utiliser LGTM. Ce sera encourageant de la mise à jour.

Recommended Posts

J'ai créé un programme en Python qui lit les données FX CSV et crée un grand nombre d'images de graphiques
J'ai créé un programme en Python qui change les données de 1 minute de FX en une heure arbitraire (1 heure, etc.)
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai créé un programme cryptographique César en Python.
Je veux exécuter et distribuer un programme qui redimensionne les images Python3 + pyinstaller
Traitement pleine largeur et demi-largeur des données CSV en Python
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
Programme qui résume les données csv de l’historique des transactions de l’action SBI Securities [Python3]
J'ai essayé "un programme qui supprime les déclarations en double en Python"
[Python] Création d'un outil GUI qui traite automatiquement le CSV des données d'élévation de température dans Excel
Programme Python qui recueille quotidiennement des tweets contenant des mots-clés spécifiques et les enregistre en csv
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
Comment créer une grande quantité de données de test dans MySQL? ??
[Python] Un programme qui crée des escaliers avec #
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai créé un bot Discord en Python qui se traduit quand il réagit
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
[Python] J'ai créé un code de scraping web qui acquiert automatiquement le titre de l'actualité et l'URL de Nihon Keizai Shimbun.
Script Python qui lit les fichiers SQL, exécute BigQuery et enregistre le csv
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
Publier et utiliser un programme qui collecte automatiquement les images du visage de personnes spécifiées
[Python] J'ai créé un LINE Bot qui détecte les visages et effectue le traitement de la mosaïque.
J'ai fait un module en langage C qui filtre les images chargées par Python
[Python] Un programme qui calcule le nombre de mises à jour des enregistrements les plus élevés et les plus faibles
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
Un programme qui envoie une quantité fixe de courrier à un moment spécifié par Python
Un mémo que j'ai écrit un tri rapide en Python
J'ai écrit une classe en Python3 et Java
Un programme qui supprime les instructions en double en Python
Environnement enregistré pour l'analyse des données avec Python
J'ai créé un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.
J'ai créé et publié une image Docker qui lit RSS et tweete automatiquement régulièrement.
[Python] Un programme qui trouve le nombre d'étapes le plus court dans un jeu qui traverse les nuages
J'ai créé un graphique à barres empilées avec matplotlib de Python et ajouté une étiquette de données
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
[Python / C] J'ai créé un appareil qui fait défiler sans fil l'écran d'un PC à distance.
[Python] Un programme qui compte le nombre de vallées
Recevez des données de dictionnaire à partir de programmes Python avec AppleScript
J'ai créé une VM qui exécute OpenCV pour Python
Programme Shell qui devient aho par multiples de 3
[Python] Un programme qui compare les positions des kangourous.
Programme Python qui convertit les données ical en texte
Lors de l'écriture dans un fichier csv avec python, une histoire que j'ai fait une légère erreur et n'a pas respecté la date de livraison
Exemple d'agrégation d'une grande quantité de données de séries temporelles à l'aide de Python dans un petit environnement de mémoire à une vitesse raisonnable
Création d'un toolver qui crache le système d'exploitation, Python, les modules et les versions d'outils à Markdown
Script Python qui stocke 15 ans de données de jeu MLB dans MySQL en 10 minutes (Baseball Hack!)
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Un mémo qui lit les données de dashDB avec Python et Spark
J'ai essayé de [gratter] des images de mode et des phrases de texte avec Python.
Programme Python du "Livre qui enseigne facilement la programmation difficile"
Un programme polyvalent qui formate les chaînes de commande Linux avec python