Table of Contents
在現代金融市場中,程式交易逐漸成為投資者提升效率與降低風險的重要工具。也有越來越多的券商開始提供 API 服務,讓投資人能夠自動化下單、快速反應市場變動。本文將介紹如何利用元富證 API 進行自動化下單,並結合 TQuant Lab 的策略,實際操作展示如何透過程式化的方式優化投資決策。透過這套流程,投資者能夠更好地掌握市場機會,提升投資績效。
本文以巴菲特企業投資法則為範例,詳細介紹可以參考 TQuant Lab 華倫.巴菲特企業投資法則
此策略使用的量化指標有
因為股東權益報酬率可以藉由增加舉債來提升,因此我們排除金融產業這類高槓桿的產業。另外對於每一元的保留盈餘,巴菲特希望企業能創造超過一元的市場價值,由於這牽涉到公司的上市年限是否夠久,因此我們篩選上市時間大於 7 年的公司。
根據企業投資法則中的選股條件,我們需要的財務科目有以下 7 項:
其中營運產生現金流量與投資產生現金流量可用以計算自由現金流量。
自由現金流量 = 營運產生現金流量 + (-)投資產生現金流量
而投資產生現金流量多為負數。
p.s.
我們選擇 2015-12-31 符合條件的股票,每個一條件都會做一個 set ,最後取交集得到符合條件的標的
將符合上述 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},請再次執行程式,依據回報資料修正輸入')
整個程式的主要流程如下:
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 的相關方案,用高品質的資料庫,建構出適合自己的交易策略。
電子報訂閱