透過TEJ API打造自己的資料庫(下)

-自動更新資料庫

前言

延續上集我們學到的TEJ API資料撈取/存取/使用操作說明,本集以資料庫更新的自動化教學為主,與上一次的教學是連貫的,所以還沒觀看上集的朋友們請先回頭觀看新手上路(一)~

連結任意門 :【新手上路(一)】透過TEJ API打造自己的資料庫

本文精華摘要 

  • TEJ API 資料撈取
  • 資料庫更新教學
  • Windows 內建工作排程器

TEJ API 資料撈取 – 以股價資料為例

首先我們要先在Python上面安裝會用到的套件tejapi、datetime、sqlite3

pip install tejapi
pip install datetime
pip install sqlite3

已經安裝過的朋友就可以直接import 套件啦 😄~

import tejapi
import datetime
import sqlite3

安裝完成後一定要再import套件,並設定好自己的api_key,如果還沒有api_key的話,可以在TEJ API官網上🆓免費註冊試用版🆓,不過要注意的是,試用能取得的資料範圍有所限制噢 ❗️

import tejapi
tejapi.ApiConfig.api_key = “你的api_key”

本次教學使用小資方案中的證券屬性表(TWN/EWNPRCSTD)、證券交易資料表(TWN/EWPRCD),若想更自由的使用資料的話可以參考 TEJ E shop🎁

接下來就可以透過TEJ API程式碼進行資料撈取,程式碼如下:

  1. 設定資料庫 ➡️ 證券交易資料表(TWN/EWPRCD)
  2. 設定股票代碼 ➡️ 2330
  3. 設定日期 📆 > 2020–01–01
  4. 欄位篩選 ➡️ 日期 開高低收
import datetime
TSMC = tejapi.get(
'TWN/EWPRCD',  # 資料庫
coid = '2330',  # 股票代碼
mdate={'gt':'2020-01-01'},  # 日期
paginate=True,  # 單次取得資料限制最多10,000筆,增加 paginate=True,程式將自動分次取得資料
opts={'columns': ['mdate','open_d','high_d','low_d','close_d']},
# 挑選欄位
)
TSMC
TSMC – 資料展示

資料撈取過程如下:

  1. 使用tejapi撈取數據
  2. 連接資料庫 🏠(example.db)
  3. 將資料存放在資料庫🏠(example.db)
  4. 關閉連線
TSMC = tejapi.get(
'TWN/EWPRCD',  # 資料庫
coid = '2330',  # 股票代碼
mdate={'gt':'2020-01-01'},  # 日期
paginate=True,  # 單次取得資料限制最多10,000筆,增加 paginate=True,程式將自動分次取得資料
opts={'columns': ['mdate','open_d','high_d','low_d','close_d']},
# 挑選欄位
)
# 連接資料庫
conn = sqlite3.connect('example.db')
# 存取
TSMC.to_sql(name='TSMC', con=conn, if_exists="replace", index=False)
# 關閉資料庫連線
conn.close()

執行完程式後,千萬要記得檢查資料庫 ❗️❗️


資料庫更新

延續上面的步驟,並加入forloop的功能,將更新單一個股轉變為多股,每執行一次都會將結果直接存入資料庫 💪。詳細步驟如下:

  1. 首先從證券屬性表(TWN/EWNPRCSTD)中,撈取所有證券代碼
  2. 接著再將上市所有普通股代碼篩選出來
  3. 將個股當日收盤資料透過TEJ API 抓出來,並以擴充(append)的方式存入資料庫
  4. for loop執行(相同行動執行多次)
import sqlite3
import datetime 
import tejapi

stocks = tejapi.get('TWN/EWNPRCSTD',paginate=True)
# 上市所有普通股代碼
code = stocks[(stocks.market=='TSE')&(stocks.stypenm == '普通股')].coid.values
# 連接資料庫
conn = sqlite3.connect('example.db')
for stock in code:
    stockname = 's'+stock
    data = tejapi.get('TWN/EWPRCD',coid = stock,mdate = {'gt':datetime.datetime.now()-datetime.timedelta(days=1)}
                      ,opts = {'columns':['mdate','open_adj','high_adj','low_adj','close_adj','volume']}
                      ,paginate=True
                      ,chinese_column_name=True
                     )
    # 資料存入資料庫
    data.to_sql(name = stockname, con = conn, if_exists='append', index=False)
conn.close()

Windows 工作排程器

  1. 左下角搜尋 工作排程器(task scheduler)
  2. 雙擊進入後,點選右手邊的建立工作,並取名稱(update_database)
  3. 切換到觸發程序,點選新增開始時間固定在下午3點半(因為3點後當日收盤資料才會更新),並在設定部分將更新頻率調整為每天
  4. 切換到動作,一樣點選新增動作選取啟動程式 👷:
  • 第一個空白處輸入 python 所在的位置(路徑)
  • 第二個空白處輸入 程式碼的檔名
  • 第三個空白處輸入 程式碼 所在的位置(路徑)

結語

這次分享給大家的是如何使用TEJ API進行資料撈取,並搭配windows內建排程工具,以達到資料庫自動更新的教學,我們在未來還會分享更多python的金融資料分析實作,如果有想知道的內容或感興趣主題可以在下方留言告訴我們 ❗️❗️
最後,如果喜歡本篇文章的內容請幫我們點擊下方圖示👏 ,給予我們更多支持與鼓勵,有任何的問題都歡迎在下方留言/來信,我們會盡快回覆大家👍👍

完整程式碼

延伸閱讀

相關網站連結

有任何使用上的問題都歡迎與我們聯繫:聯絡資訊

返回总览页