Pythonで特定フォルダにある米国株のチャートを一括で作成保存する
今回はYahoo Financeから取得してきた米国株のCSVファイル数千個を、設定したルールに則りチャートに変換し、保存していきます。チャートはボリンジャーバンドとMACDを描画。
早速コードはこちら。今回はドンチャン チャネルブレイク。
import pandas as pdr
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import talib as ta
from mpl_finance import candlestick_ohlc
import csv #csv形式
import os
csv_file=os.listdir('/Users/***/stock/') #ファイルが格納されているディレクトリ
for i in range(len(csv_file)): #csvファイルの数だけfor分を回す.
df =pdr.read_csv('/Users/***/stock/'+str(csv_file[i]),index_col=0, parse_dates=True).tail(120)
ma_s = df['Close'].tail(20).mean() #短期MA。最新日より20日分のデータを取得してきて平均値にしている
ma_l = df['Close'].tail(60).mean() #長期MA。最新日より60日分のデータを取得してきて平均値にしている
ma_ave = ma_s/ma_l
#-----------手法:ドンチャンチャネルブレイク-----------
if df['Close'].tail(1).mean() >= df['Close'].tail(20).max().mean():
#MACD
df['macd'], df['macdsignal'], df['macdhist'] = ta.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9)
#ボリバン
df['upper'], df['middle'], df['lower'] = ta.BBANDS(df['Close'], timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
#df['ma5'] = ta.SMA(df['Close'], timeperiod=20) #SMA
df = df[33:]
fig = plt.figure()
ax1 = fig.add_axes((0.1, 0.5, 0.8, 0.5))
ax1.tick_params(labelbottom = False, bottom = False)
ax1.set_title(str(csv_file[i]))
ax2 = fig.add_axes((0.1, 0.3, 0.8, 0.2), sharex=ax1)
ax2.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d'))
candlestick_ohlc(ax1, zip(mdates.date2num(df.index), df['Open'], df['High'], df['Low'], df['Close']), width=0.4)
ax1.plot(mdates.date2num(df.index), df['upper'])
ax1.plot(mdates.date2num(df.index), df['middle'])
ax1.plot(mdates.date2num(df.index), df['lower'])
ax2.plot(mdates.date2num(df.index),df['macd'])
ax2.plot(mdates.date2num(df.index),df['macdsignal'])
ax3 = fig.add_axes((0.1, 0.1, 0.8, 0.2), sharex=ax1)
ax3.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d'))
candlestick_ohlc(ax1, zip(mdates.date2num(df.index), df['Open'], df['High'], df['Low'], df['Close']), width=0.4)
ax3.bar(mdates.date2num(df.index),df['Volume'])
plt.savefig('/Users/emoto/project/analysis_data/'+str(csv_file[i])+'.png')
今回はドンチャン チャネルブレイク。表示結果と格納先のディレクトリ状況は下記です。
今回は以上になります!
最後まで読んでいただきありがとうございました!!