請更新您的瀏覽器

您使用的瀏覽器版本較舊,已不再受支援。建議您更新瀏覽器版本,以獲得最佳使用體驗。

理財

元富證 API 初學者指南:如何利用 TQuant Lab 策略進行自動化下單

TEJ 台灣經濟新報

更新於 2024年11月28日15:04 • 發布於 2024年11月08日05:30
元富證 API 初學者指南:如何利用 TQuant Lab 策略進行自動化下單

Photo byWalkator onUnsplash

前言

在現代金融市場中,程式交易逐漸成為投資者提升效率與降低風險的重要工具。也有越來越多的券商開始提供 API 服務,讓投資人能夠自動化下單、快速反應市場變動。本文將介紹如何利用元富證 API 進行自動化下單,並結合 TQuant Lab 的策略,實際操作展示如何透過程式化的方式優化投資決策。透過這套流程,投資者能夠更好地掌握市場機會,提升投資績效。

策略範例

本文以巴菲特企業投資法則為範例,詳細介紹可以參考 TQuant Lab 華倫.巴菲特企業投資法則

範例摘要

此策略使用的量化指標有

  • 最近年度股東權益報酬率 > 產業平均值
  • 3 年平均股東權益報酬率 > 15%
  • 最近年度毛利率 > 產業平均值
  • 7 年內市值增加值 / 7 年內保留盈餘增加值 > 1
  • ( 最近年度自由現金流量 / 7 年前自由現金流量 ) - 1 > 1

因為股東權益報酬率可以藉由增加舉債來提升,因此我們排除金融產業這類高槓桿的產業。另外對於每一元的保留盈餘,巴菲特希望企業能創造超過一元的市場價值,由於這牽涉到公司的上市年限是否夠久,因此我們篩選上市時間大於 7 年的公司。

使用 TejToolAPI 抓取所需的財務資料

根據企業投資法則中的選股條件,我們需要的財務科目有以下 7 項:

  • 主產業別_中文
  • 常續 ROE
  • 營業毛利率
  • 個股市值_元
  • 保留盈餘
  • 營運產生現金流量
  • 投資產生現金流量

其中營運產生現金流量與投資產生現金流量可用以計算自由現金流量。

自由現金流量 = 營運產生現金流量 + (-)投資產生現金流量

而投資產生現金流量多為負數。

p.s.

取出符合 5 項選股條件的標的

我們選擇 2015-12-31 符合條件的股票,每個一條件都會做一個 set ,最後取交集得到符合條件的標的

將符合上述 5 項選股條件的股票取交集即可獲得我們的標的,可以發現以電子零組件業與半導體業為大宗。

符合 5 項選股條件之標的

這樣就得到我們利用此策略選出來的股票池,接下來就進入正式的下單環節。

環境設置與套件安裝

驗證流程包含

自動化下單

交易流程範例可以參考API 文件範本

首先,你需要安裝 MasterTradePy ,能夠幫助你實現自動化交易策略。

要下載 API 檔案可以到元富數位 API 專區

要在終端機先使用 CD 指令切到 MasterTradePy 資料夾

cd MasterTradePy pip install MasterTradePy-0.0.15-py3-none-win_amd64.whl

引入套件

回到編譯器內,開啟使用 API 所需要的套件。

import threading from MasterTradePy.api import MasterTradeAPI from MasterTradePy.model import * from MasterTradePy.constant import PriceType, OrderType, TradingSession, Side, TradingUnit, RCode

初始化設定

設定帳號、密碼以及目標股票代碼。

這裡我們將股票代碼設置成一個列表,放入巴菲特策略所選出來的股票池。

username = 'your_username' password = 'your_password' stock_id_list = [ 1476, 1477, 2467, 3006, 3014, 3034, 3042, 3413, 3533, 3557, 5234, 5269, 6202, 8016, 8046, 8081, 9906 ]

event = threading.Event() 是用來控制多線程之間的同步,特別是使用 API 進行交易時,確保某些事件(如連接成功)發生後,才讓其他部分的程式繼續執行。

event = threading.Event()

執行訂單

我們以市價買入股票池中的所有股票。

def execute_order(api, stock_id_list): account = 'your_account' price = '' # 空白表示市價下單 qtr = '1000' # 1張請輸入1000 orderType = OrderType.ROD if not price: priceType = PriceType.MKT else: priceType = PriceType.LMT for stock_id in stock_id_list: symbol = stock_id order = Order(tradingSession=TradingSession.NORMAL, side=Side.Buy, symbol=symbol, priceType=priceType, price=price, tradingUnit=TradingUnit.COMMON, qty=qty, orderType=orderType, tradingAccount=account, userDef='') rcode = api.NewOrder(order) if rcode == RCode.OK: print(f'已送出委託: {symbol}') else: print(f'下單失敗! 股票代號: {symbol},請再次執行程式,依據回報資料修正輸入')

自動化下單主程式流程

整個程式的主要流程如下:

  • 登入交易 API,並進行雙因子認證。
  • 自動下單買入股票。 def main(): trader = ConcreteMarketTrader() api = MasterTradeAPI(trader) api.SetConnectionHost('solace140.masterlink.com.tw:55555') # 登入交易主機 rc = api.Login(username, password, True, True, True) if rc == RCode.OK: print('交易主機連線成功,進行雙因子認證') # 取得帳戶並進行驗證 accounts = [x[4:] for x in api.accounts] rcc = api.CheckAccs(tradingAccounts=accounts) if rcc == RCode.OK: print('驗證已通過,可執行 API 交易功能') execute_order(api, stock_id_list) input("Press Enter to finish…\n") main()

結論

本文透過範例展示了如何利用元富證券的 API 進行自動化下單操作,並結合巴菲特價值投資策略進行實際應用。我們介紹了如何設定交易環境、執行策略以及下單流程,讓投資人能夠藉由程式交易的方式提高交易效率,下一篇會繼續介紹永豐 API 的使用方法以及範例使用,帶各位進入程式交易的領域。
提醒,本文巴菲特選股法則與 API 自動下單程式僅做示範之用,不為獲利保證來源。投資一定有風險,投資策略有賺有賠,使用者參考本文開發投資策略時,建議參酌自已與外部資訊,增加指定每檔股票的下單股數與價格,並嚴格控管風險。

未來,TEJ 也會持續使用 TEJ 資料庫及 TQuant Lab 來建構各式指標,並回測指標績效,所以歡迎對各種交易回測有興趣的讀者,選購 TQuant Lab 的相關方案,用高品質的資料庫,建構出適合自己的交易策略。

【TQuant Lab 回測系統】解決你的量化金融痛點

全方位提供交易回測所需工具

點我註冊會員,開始試用

原始程式碼

點此前往 github

延伸閱讀

查看原始文章

更多理財相關文章

01

快訊/不怕英特爾競爭 台積電最大敵人現身 魏哲家憂心「電力供應」

三立新聞網
02

半導體232調查出爐!川普突宣布25%關稅 輝達、超微中槍 台積電影響曝

鏡報
03

台積法說/亞利桑那二廠量產等重點一次看

NOWNEWS今日新聞
04

全聯、好市多都不敢輕忽的對手!LOPIA 用「肉舖靈魂」與「日味熟食」,站穩台灣超市市場

經理人月刊
05

獨家/想走走不了?四行庫想撤守緬甸、暫喊卡 關鍵原因曝光

經濟日報
06

台積電今年營收又將年增3成!魏哲家直言又是一個好年 只怕兩件事

鏡報
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...