質問編集履歴
2
2023/12/30:やりたい事を達成したコード作成できました。※該当コードにて更新させていただきます。
test
CHANGED
File without changes
|
test
CHANGED
@@ -23,41 +23,36 @@
|
|
23
23
|
### 該当のソースコード
|
24
24
|
|
25
25
|
```python
|
26
|
-
import pandas as pd
|
27
|
-
import matplotlib.pyplot as plt
|
28
|
-
import numpy as np
|
29
26
|
import datetime
|
30
|
-
import yfinance as yf
|
27
|
+
import yfinance as yf#yahooファイナンスAPI
|
31
|
-
|
28
|
+
import openpyxl
|
32
29
|
|
30
|
+
# 転記先のExcelファイルパス
|
31
|
+
excel_path = 'C:\\Users\\nakagami\\亮太\\21_資産運用\\資産運用\\テスト_保有株ポートフォリオ.xlsx'
|
32
|
+
wb = openpyxl.load_workbook(excel_path)
|
33
|
+
ws=wb['保有']
|
34
|
+
c1=ws['B1']
|
35
|
+
|
36
|
+
#ステップ1:yahooファイナンス情報を取得
|
33
|
-
#
|
37
|
+
#ターゲットを指定
|
34
38
|
tickers = ["1655.T", "2002.T"]
|
35
39
|
|
36
|
-
#
|
40
|
+
#ステップ2:取得情報をExcelて転記
|
37
|
-
excel_path = r'C:\Users\nakagami\亮太\21_資産運用\資産運用\テスト_保有株ポートフォリオ.xlsx'
|
38
|
-
|
39
|
-
# 出力先のシート
|
40
|
-
sheet_name = '保有'
|
41
|
-
|
42
|
-
# データを収集して終値を転記
|
43
41
|
for i, ticker in enumerate(tickers):
|
44
42
|
data = yf.download(ticker, period='1d', interval="1d")
|
45
43
|
|
46
|
-
# 日
|
44
|
+
# 更新日を転記
|
47
45
|
if i == 0:
|
48
|
-
da
|
46
|
+
today1= datetime.date.today()
|
49
|
-
|
47
|
+
today2= "{0:%Y/%m/%d}".format(today1)
|
50
|
-
|
48
|
+
c1.value = today2
|
51
|
-
|
49
|
+
|
52
|
-
|
53
|
-
# 終値データを
|
50
|
+
# 終値データを指定セルに転記(G7から)
|
54
51
|
closing_prices = data['Close']
|
55
|
-
ws = load_workbook(excel_path)[sheet_name]
|
56
52
|
for j, value in enumerate(closing_prices):
|
57
|
-
ws.cell(row=
|
53
|
+
ws.cell(row=7 + i, column=7 + j, value=value)
|
58
54
|
|
59
|
-
# 保存
|
60
|
-
|
55
|
+
wb.save(excel_path)
|
61
56
|
```
|
62
57
|
|
63
58
|
### 補足情報(FW/ツールのバージョンなど)
|
1
ライブラリにopenpyxlを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,6 +28,7 @@
|
|
28
28
|
import numpy as np
|
29
29
|
import datetime
|
30
30
|
import yfinance as yf
|
31
|
+
from openpyxl import load_workbook
|
31
32
|
|
32
33
|
# ターゲットを指定
|
33
34
|
tickers = ["1655.T", "2002.T"]
|
@@ -41,13 +42,22 @@
|
|
41
42
|
# データを収集して終値を転記
|
42
43
|
for i, ticker in enumerate(tickers):
|
43
44
|
data = yf.download(ticker, period='1d', interval="1d")
|
45
|
+
|
44
46
|
# 日時データをA1セルに転記
|
45
47
|
if i == 0:
|
48
|
+
data.index = pd.to_datetime(data.index) # インデックスを日時型に変換
|
49
|
+
date_data = data.index.strftime('%Y-%m-%d') # 日時データを文字列に変換
|
50
|
+
date_data = pd.DataFrame(date_data, columns=['Date'])
|
46
|
-
data.to_excel(excel_path, sheet_name=sheet_name, startrow=
|
51
|
+
date_data.to_excel(excel_path, sheet_name=sheet_name, startrow=1, startcol=1, index=False)
|
47
52
|
|
48
53
|
# 終値データをG7, G8, G9などに転記
|
49
54
|
closing_prices = data['Close']
|
55
|
+
ws = load_workbook(excel_path)[sheet_name]
|
56
|
+
for j, value in enumerate(closing_prices):
|
50
|
-
|
57
|
+
ws.cell(row=6 + i, column=6 + j, value=value)
|
58
|
+
|
59
|
+
# 保存
|
60
|
+
load_workbook(excel_path).save(excel_path)
|
51
61
|
```
|
52
62
|
|
53
63
|
### 補足情報(FW/ツールのバージョンなど)
|