L'analyse des cours des actions semble intéressante!
Quand je l'ai recherché, j'ai trouvé que les stocks d'outre-mer peuvent être facilement obtenus sous forme de données avec DataReader de Pandas. (Par exemple, Google finance et FRED) Les cours des actions japonaises ne peuvent pas être trouvés comme des données inattendues.
Il vous suffit de le retirer de Yahoo! Finance! Il existe de nombreux articles, Yahoo! Finance [Interdit le grattage](https://www.yahoo-help.jp/app/answers/detail/p/546/a_id/93575/~/yahoo%21%E3%83%95%E3% 82% A1% E3% 82% A4% E3% 83% 8A% E3% 83% B3% E3% 82% B9% E6% 8E% B2% E8% BC% 89% E6% 83% 85% E5% A0% B1% E3% 81% AE% E8% 87% AA% E5% 8B% 95% E5% 8F% 96% E5% BE% 97% EF% BC% 88% E3% 82% B9% E3% 82% AF% E3% 83% AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% B0% EF% BC% 89% E3% 81% AF% E7% A6% 81% E6% AD% A2% E3% 81% 97% E3% 81% A6% E3% 81% 84% E3% 81% BE% E3% 81% 99), donc je ne peux pas le retirer d'ici.
Vous pourriez argumenter que vous pouvez utiliser le module jsm, mais celui-ci utilise également le scraping.
Le but de cet article est de ** récupérer des données sans grattage et d'en faire une seule liste **.
Veuillez me dire seulement la conclusion! Je garderai le code (j'ai fait de mon mieux) pour les gens. Veuillez corriger vous-même les détails.
Code 1
import os
import pandas as pd
import matplotlib.pyplot as plt
os.chdir("C:\\Users\\Kuma_T\\stock") #Spécifiez l'emplacement du fichier et placez les données en premier
plt.rcParams['figure.figsize'] = [10, 5]
plt.rcParams['xtick.direction'] = 'in'#ligne d'échelle de l'axe des x orientée vers l'intérieur('in')Ou vers l'extérieur('out')Ou bidirectionnel('inout')
plt.rcParams['ytick.direction'] = 'in'#La ligne d'échelle de l'axe y est tournée vers l'intérieur('in')Ou vers l'extérieur('out')Ou bidirectionnel('inout')
plt.rcParams['xtick.major.width'] = 1.0 #Largeur de ligne de la ligne d'échelle principale de l'axe x
plt.rcParams['ytick.major.width'] = 1.0 #Largeur de ligne de la ligne d'échelle principale de l'axe y
plt.rcParams['font.size'] = 12 #Taille de police
plt.rcParams['axes.linewidth'] = 1.0 #Largeur de ligne de bord de largeur de ligne de l'axe. Épaisseur du boîtier
plt.rcParams['font.family'] = 'Times New Roman' #Nom de police à utiliser
Code 2
code = 3672 #Orthoplus
start = 2015
end = 2017
x = []
y = []
for n in range (start, end+1):
file_name = 'stocks_'+str(code)+'-T_1d_%d.csv' %n #Spécifiez le nom du fichier
data = pd.read_csv(file_name, header=0, encoding='cp932') #Je ne peux pas lire le japonais, alors spécifiez l'encodage
a =list(pd.to_datetime(data.iloc[:,0], format='%Y-%m-%d')) #Si vous le lisez tel quel, la date ne peut pas être reconnue, utilisez donc datetime
x += a[::-1] #Pour inverser l'ordre dans la liste[::-1]Et ajouter à la liste de x
b = list(data.iloc[:,4])
y += b[::-1]
z = pd.DataFrame(y)#Convertir en DataFrame
sma75 = pd.DataFrame.rolling(z, window=75,center=False).mean()
sma25 = pd.DataFrame.rolling(z, window=25,center=False).mean()
plt.plot(x, y, color="blue", linewidth=1, linestyle="-")
plt.plot(x, sma25, color="g", linewidth=1, linestyle="-", label="SMA25")
plt.plot(x, sma75, color="r", linewidth=1, linestyle="-", label="SMA75")
plt.title("Alt Plus ("+str(code)+")", fontsize=16, fontname='Times New Roman')
plt.xlabel("Year-Month", fontsize=14, fontname='Times New Roman') #titre de l'axe des x
plt.ylabel("Stock price", fontsize=14, fontname='Times New Roman') #titre de l'axe y
plt.legend(loc="best")
plt.show()
Données sur le cours de l'action individuelle http://k-db.com/stocks/
Si vous accédez ici, vous pouvez obtenir les données des actions japonaises sous forme de fichier CSV.
Si vous jetez un œil à Ortho Plus (3672) à titre d'essai,
Le fichier CSV est ici, alors téléchargez-le dans un dossier spécifique. À propos, ces données ont une nouvelle date sur la face supérieure. Cette fois, j'ai téléchargé les données de 2015-2017.
Tout d'abord, spécifiez le dossier téléchargé.
Code 1
import os
import pandas as pd
import matplotlib.pyplot as plt
os.chdir("C:\\Users\\Kuma_T\\stock") #Spécifiez l'emplacement du fichier et placez les données en premier
Ensuite, chargez le fichier CSV enregistré.
stocks_3672-T_1d_2015 stocks_3672-T_1d_2016 stocks_3672-T_1d_2017 Parce que nous avons préparé un fichier appelé Code de marque 3672 Commencer le chargement en 2015 La fin de la lecture est 2017.
Ensuite, faites une liste vide.
Code 2
code = 3672 #Orthoplus
start = 2015
end = 2017
x = []
y = []
J'écrirai dans la fonction de boucle.
Spécifiez le nom du fichier à lire et à lire avec Pandas read_csv (l'encodage est spécifié car une erreur se produit en japonais). Lisez les données de date dans la première colonne de données en tant que date avec iloc [:, 0] et pd.to_datetime et répertoriez-les. Comme mentionné ci-dessus, le fichier CSV a une date plus récente en haut, alors ajoutez-le à la liste vide dans l'ordre inverse avec la date la plus ancienne en haut.
De même, ajoutez le cours de clôture dans la 4ème colonne à la liste vide.
Code 2
for n in range (start, end+1):
file_name = 'stocks_'+str(code)+'-T_1d_%d.csv' %n #Spécifiez le nom du fichier
data = pd.read_csv(file_name, header=0, encoding='cp932') #Je ne peux pas lire le japonais, alors spécifiez l'encodage
a =list(pd.to_datetime(data.iloc[:,0], format='%Y-%m-%d')) #Si vous le lisez tel quel, la date ne peut pas être reconnue, utilisez donc datetime
x += a[::-1] #Pour inverser l'ordre dans la liste[::-1]Et ajouter à la liste de x
b = list(data.iloc[:,4])
y += b[::-1]
Avec cela, nous avons pu obtenir les données de prix de l'action cible dans un type de liste.
Lorsque vous atteignez ce point, faites un graphique et vérifiez-le.
Code 2
plt.plot(x, y, color="blue", linewidth=1, linestyle="-")
plt.show()
Le graphique est créé avec succès.
En guise de mise en garde, si vous ne lisez pas dans l'ordre inverse, ce sera comme suit.
Ajoutons une moyenne mobile en bonus.
La moyenne mobile peut être facilement calculée en utilisant DataFrame.rolling de Pandas. Comme son nom l'indique, DataFrame.rolling est utilisé au format DataFrame, donc List est converti.
Code 2
z = pd.DataFrame(y)#Convertir en DataFrame
sma75 = pd.DataFrame.rolling(z, window=75,center=False).mean()
sma25 = pd.DataFrame.rolling(z, window=25,center=False).mean()
plt.plot(x, y, color="blue", linewidth=1, linestyle="-")
plt.plot(x, sma25, color="g", linewidth=1, linestyle="-", label="SMA25")
plt.plot(x, sma75, color="r", linewidth=1, linestyle="-", label="SMA75")
Cette fois, nous avons ajouté une moyenne mobile de 25 jours et une moyenne mobile de 75 jours.
** J'ai pu obtenir une liste des actions japonaises ** sans grattage. Cette fois, j'ai essayé d'utiliser Ortho Plus (3672), mais essayez-le avec des marques individuelles. La prochaine fois, j'aimerais analyser en utilisant ces données.
Last but not least, je suis toujours un débutant en actions et en programmation. Veuillez commenter si vous en avez.
Écrire du code pour la prévision du cours des actions à l'aide de l'apprentissage automatique en Python http://www.stockdog.work/entry/2017/02/09/211119
[Python / jsm] Obtenez des données sur le cours des actions des sociétés japonaises pour chaque émission https://algorithm.joho.info/programming/python/jsm-get-japan-stock/
Obtenez des données de séries chronologiques sur le cours de l'action (série originale) avec le module jsm de Python, attachez le graphique en lignes de pliage de sortie à Gmail et envoyez-le par courrier http://qiita.com/HirofumiYashima/items/471a2126595d705e58b8
Obtenez des informations sur les actions japonaises et dessinez des graphiques de bougies avec des pandas Python http://sinhrks.hatenablog.com/entry/2015/02/04/002258
Prédire les cours des actions par une analyse Big Data à partir des données passées http://qiita.com/ynakayama/items/420ebe206e34f9941e51
1er grattage des cours des actions avec des pandas ~ Essayez de dessiner un graphique de style S ◯ I ~ http://www.stockdog.work/entry/2016/08/26/170152
Bien que ce ne soit pas une action individuelle, j'ai écrit un nouvel article sur l'investissement en actions.
"Il existe une méthode gagnante pour ce jeu (investissement financé) -Jeu d'association d'actionnariat-" https://qiita.com/Kuma_T/items/667e1b0178a889cc42f7
Recommended Posts