import pandas as pd
import shioaji as sj
api = sj.Shioaji()
accounts = api.login("")
result = api.activate_ca("XXX","XXX")
ca_path="XXX",
ca_passwd="XXX",
person_id="XXX",
)
print(result)
# True
--------------使用以上代碼沒有問題----------
# 獲取股票價格資料
today = datetime.date.today()
end_date = today
# 創建一個空的 DataFrame 以存儲資料
price_data = pd.DataFrame(columns=['代碼', '當日', '5日', '10日', '30日', '60日'])
for stock_code in filtered_stocks['股票代碼']:
contract = api.Contracts.Stocks[stock_code]
print(f"股票代碼:{stock_code}")
# 獲取當日價格
snapshot = api.snapshots([contract])
today_price = snapshot[0].last_trade_price
# 獲取5日、10日、30日、60日價格
date_ranges = [5, 10, 30, 60]
price_data_row = {'代碼': stock_code, '當日': today_price}
for date_range in date_ranges:
start_date = today - datetime.timedelta(days=date_range)
candles = api.kbars(contract, start=start_date, end=end_date, compression=date_range, type='日')
price_data_row[f'{date_range}日'] = candles[-1].close
# 將數據添加到 DataFrame
price_data = price_data.append(price_data_row, ignore_index=True)
# 將資料保存到 CSV 檔,以 BIG5 編碼
price_data.to_csv('stock_price_data.csv', encoding='big5', index=False)
# 關閉 API 連接
api.logout()
--------------------加入以上代碼後,log出現如下,是憑證有問題嗎?檢查不出問題 或是簽署問題?------------------------------------------------------------
2023/10/25 19:41:59.871 (PID=25120) DEBUG end cProperty::parse() return = true
2023/10/25 19:41:59.871 (PID=25120) DEBUG end cProperty::loadFromFile() return = true
2023/10/25 19:41:59.871 (PID=25120) DEBUG cProperty::getProperty() : LOG.level = WARN
2023/10/25 19:41:59.872 (PID=25120) ERROR | |--- 驗章失敗, 原因 = ok
2023/10/25 19:41:59.872 (PID=25120) ERROR 內部驗證失敗, 這個憑證鏈捨棄不使用, 無法用來驗憑證鏈
2023/10/25 19:41:59.874 (PID=25120) ERROR | |--- 驗章失敗, 原因 = ok
2023/10/25 19:41:59.874 (PID=25120) ERROR 內部驗證失敗, 這個憑證鏈捨棄不使用, 無法用來驗憑證鏈
2023/10/25 19:41:59.875 (PID=25120) ERROR | |--- 驗章失敗, 原因 = ok
2023/10/25 19:41:59.875 (PID=25120) ERROR 內部驗證失敗, 這個憑證鏈捨棄不使用, 無法用來驗憑證鏈