Sitemap
TEJ-API Financial Data Analysis

Raw Hand / Data Analysis / Quant / Application

Follow publication

【Application】MasterLink Securities API Beginner’s Guide: How to Use TQuant Lab Strategies for Automated Trading

--

Nov 08 2024

Automated Trading
Photo by Walkator on Unsplash

Preface

In modern financial markets, algorithmic trading is increasingly becoming essential for investors to enhance efficiency and reduce risk. More and more brokerage firms offer API services, enabling investors to automate order placement and quickly respond to market changes. This article will demonstrate using MasterLink Securities API for automated trading while integrating strategies from TQuant Lab. Through a practical example, we’ll show how a systematic approach can optimize investment decisions, helping investors seize market opportunities and improve performance.

Strategy Example

This guide uses Warren Buffett’s corporate investment principles as an example. Refer to TQuant Lab’s Warren Buffett Corporate Investment Rules for a detailed introduction.

Example Summary

The quantitative indicators used in this strategy include:

  1. Recent Annual Return on Equity (ROE) > Industry Average
  2. 3-Year Average ROE > 15%
  3. Recent Annual Gross Profit Margin > Industry Average
  4. 7-Year Market Value Growth / 7-Year Retained Earnings Growth > 1
  5. (Recent Annual Free Cash Flow / Free Cash Flow from 7 Years Ago) — 1 > 1

Since ROE can be boosted by increased debt, industries with high leverage, such as the financial sector, are excluded. Additionally, Buffett expects companies to generate more than one unit of market value for every unit of retained earnings. This involves filtering companies listed for over 7 years, as a more extended listing history is necessary for this evaluation.

Fetch the required financial data using the TejToolAPI

According to the stock selection criteria in the corporate investment rules, we require the following 7 financial items:

  • Primary Industry (Chinese)
  • Consistent ROE
  • Operating Gross Margin
  • Individual Stock Market Value (in NT$)
  • Retained Earnings
  • Cash Flow from Operations
  • Cash Flow from Investments

The cash flow from operations and the cash flow from investments can be used to calculate the free cash flow.

Free Cash Flow = Cash Flow from Operations + (-) Cash Flow from Investments

Note that the cash flow from investments is often a negative number.

p.s.

Detailed instructions for using the TejToolAPI can be found on the TQuant Lab GitHub: TejToolAPI Documentation.

The datasets provided by the TejToolAPI can be referenced on the TQuant Lab official website: TQuant Lab Datasets.

Extract targets that meet the 5 stock selection criteria.

We select stocks meeting the criteria as of 2015–12–31. For each condition, a separate set is created, and the final step involves taking the intersection of these sets to identify the targets that satisfy all the conditions.

By taking the intersection of stocks meeting the 5 stock selection criteria, we can determine our targets. It is evident that the majority of these stocks belong to the Electronic Components and Semiconductor industries.

Automated Trading
Targets that meet the 5 stock selection criteria.

This gives us the stock pool selected using this strategy. Next, we proceed to the formal order placement stage.

Environment Setup and Package Installation

The verification process includes the following steps:

STEP 1:
Download the API component and use your program to log in to the MasterLink Securities API. Log in to the test environment.

STEP 2:
Place, modify, and cancel ROD orders (verify the order details on the Digital API website and execute the order through your program).

STEP 3:
Place IOC orders (verify the order details on the Digital API website and execute the order through your program).

STEP 4:
Place FOK orders (verify the order details on the Digital API website and execute the order through your program).

STEP 5:
After placing the order, enter the order number on the Digital API website verification page.

STEP 6:
For Steps 3, 4, and 5, after entering the order number, click “Verify” on the Digital API website verification page.

STEP 7:
Once the verification is successful, the process is complete. Please wait for the manual review to finalize the approval process before gaining access.

First, you must install MasterTradePy, which can help you implement automated trading strategies.

Use the cd command in the terminal to navigate to the MasterTradePy folder.

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

Importing Packages

Return to your code editor and load the required packages for the API.

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

Initialization Settings

Set up your account credentials (account and password) and specify the target stock codes.

Here, we create a list of stock codes selected based on the Buffett Strategy, representing the stock pool.

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() Explanation

event = threading.Event() manages synchronization between multiple threads. This is particularly important when using the API for trading, as it ensures that certain events (e.g., successful connection) occur before other program parts proceed.

event = threading.Event()

Execute Orders

We will place market orders to buy all the stocks in the stock pool.

def execute_order(api, stock_id_list):
account = 'your_account'
price = '' # Leave blank for market order
qtr = '1000' # For 1 lot, enter 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'Order sent successfully: {symbol}')
else:
print(f'Order failed! Stock symbol: {symbol}. Please run the program again and adjust
the input based on the returned data.')

Main Program Flow for Automated Order Placement

The primary flow of the automated order placement program is as follows:

def main():
trader = ConcreteMarketTrader()
api = MasterTradeAPI(trader)
api.SetConnectionHost('solace140.masterlink.com.tw:55555')
# Log in to the trading server
rc = api.Login(username, password, True, True, True)
if rc == RCode.OK:
print('Successfully connected to the trading server, proceeding with two-factor authentication')
# Retrieve accounts and perform verification
accounts = [x[4:] for x in api.accounts]
rcc = api.CheckAccs(tradingAccounts=accounts)
if rcc == RCode.OK:
print('Verification passed, API trading functions are available')
execute_order(api, stock_id_list)
input("Press Enter to finish...\n")
main()

Conclusion

This article demonstrates how to use MasterLink Securities’ API for automated order placement, applying Buffett’s value investing strategy in practical scenarios. We covered how to set up the trading environment, execute the strategy, and follow the order placement process. By utilizing programmatic trading, investors can enhance trading efficiency. In the next article, we will introduce the usage and examples of the SinoPac API, guiding readers further into the field of algorithmic trading.

Note: The Buffett stock selection rules and API automation program in this article are for demonstration purposes only and do not guarantee profitability. Investing involves risks, and strategies may result in gains or losses. When referencing this article to develop investment strategies, it is recommended to incorporate both personal and external information, specify the quantity and price for each stock order, and strictly manage risk.

In the future, TEJ will continue using its database and TQuant Lab to construct various indicators and backtest their performance. Readers interested in trading backtesting are encouraged to explore TQuant Lab‘s offerings. With a high-quality database, you can build a trading strategy tailored to your needs.

Source Code

Github

Further Reading

--

--

TEJ-API Financial Data Analysis
TEJ-API Financial Data Analysis
TEJ 台灣經濟新報
TEJ 台灣經濟新報

Written by TEJ 台灣經濟新報

TEJ 為台灣本土第一大財經資訊公司,成立於 1990 年,提供金融市場基本分析所需資訊,以及信用風險、法遵科技、資產評價、量化分析及 ESG 等解決方案及顧問服務。鑒於財務金融領域日趨多元與複雜,TEJ 結合實務與學術界的精英人才,致力於開發機器學習、人工智慧 AI 及自然語言處理 NLP 等新技術,持續提供創新服務

No responses yet