前提・実現したいこと
Pythonで複数の銘柄で複数の株価指標を表示するプログラムを作成したい
作成したコードでは1つの銘柄の指標結果しか表示されないため、抜け・誤りがあれば教えていただきたいです。
発生している問題・エラーメッセージ
1つの銘柄分の指標結果しか表示されない
該当のソースコード
Python
1import datetime as dt 2from datetime import timedelta as td 3import pandas as pd 4import pandas_datareader.data as web 5import math 6import numpy as np 7import talib as ta 8 9end = dt.datetime.today() 10start = end - td(days=1000) 11 12Ticker = ['MSFT','FB','AAPL','CHTR','ACC','ACH','ACHC','ACI','ACIA','ACIW','ACLS','ACM'] 13 14df = web.DataReader(Ticker[0],'yahoo',start,end) 15 16df['mfi'] = ta.MFI(df['High'], df['Low'], df['Adj Close'], df['Volume'], timeperiod=14) 17df[Ticker[0]] = df['mfi'] 18da = pd.DataFrame(df[Ticker[0]].dropna(how='any')) 19 20for i in range(1,len(Ticker)): 21 try: 22 globals()['df'+str(i)] = web.DataReader(Ticker[i],'yahoo',start,end) 23 globals()['df'+str(i)]['mfi'] = ta.MFI(globals()['df'+str(i)]['High'], ['df'+str(i)]['Low'], ['df'+str(i)]['Adj Close'], ['df'+str(i)]['Volume'], timeperiod=14) 24 da[Ticker[i]] = globals()['df'+str(i)]['mfi'].dropna(how='any') 25 except: 26 pass 27 28pd.options.display.precision = 2 29da.tail()
試したこと
上記プログラムの実行結果
Date MSFT
2021-03-03 32.47
2021-03-04 26.27
2021-03-05 30.37
2021-03-08 29.91
2021-03-09 36.59
表示したい結果
Date MSFT FB AAPL ....
2021-03-03 32.47 00.00 ....
2021-03-04 26.27 00.00 ....
2021-03-05 30.37 .... ....
2021-03-08 29.91 .... ....
2021-03-09 36.59 .... ....
補足情報(FW/ツールのバージョンなど)
同様のプログラムで指標をRSIにした場合は問題なく表示できました。
Python
1import datetime as dt 2from datetime import timedelta as td 3import pandas as pd 4import pandas_datareader.data as web 5import math 6import numpy as np 7import talib as ta 8 9end = dt.datetime.today() 10start = end - td(days=1000) 11 12Ticker = ['MSFT','FB','AAPL','CHTR','ACC','ACH','ACHC','ACI','ACIA','ACIW','ACLS','ACM'] 13 14df = web.DataReader(Ticker[0],'yahoo',start,end) 15 16df['rsi'] = ta.RSI(df['Adj Close'], timeperiod=14) 17df[Ticker[0]] = df['rsi'] 18da = pd.DataFrame(df[Ticker[0]].dropna(how='any')) 19 20for i in range(1,len(Ticker)): 21 try: 22 globals()['df'+str(i)] = web.DataReader(Ticker[i],'yahoo',start,end) 23 globals()['df'+str(i)]['rsi'] = ta.RSI(globals()['df'+str(i)]['Adj Close'], timeperiod=14) 24 da[Ticker[i]] = globals()['df'+str(i)]['rsi'].dropna(how='any') 25 except: 26 pass 27 28pd.options.display.precision = 2 29da.tail()
プログラムの実行結果
MSFT FB AAPL CHTR ACC ACH ACHC ACI ACIA ACIW ACLS ACM
Date
2021-03-03 41.31 41.40 37.13 43.28 48.66 72.22 58.04 61.93 NaN 38.36 53.12 56.42
2021-03-04 40.43 43.74 34.71 46.34 42.25 63.13 54.95 63.81 NaN 35.40 45.50 52.65
2021-03-05 47.50 50.12 37.63 53.07 48.07 56.73 57.21 61.03 NaN 43.74 49.61 58.43
2021-03-08 42.77 43.02 31.65 48.42 50.97 58.45 62.58 52.44 NaN 46.20 43.42 59.54
2021-03-09 50.78 51.60 41.08 49.40 49.57 56.63 64.01 53.00 NaN 50.19 51.21 62.00
回答1件
あなたの回答
tips
プレビュー