市面上第一堂利用 Python 建立一套美股自動分析、監控與執行交易程序的課程,從抓取歷史資料、即時行情、監控帳戶部位損益與交易執行,並透過實際的分析與程式交易的範例來啟發對大家對自動化交易平台的想法。
利用 Python 串接 API 的方法
TD Ameritrade API 操作
從零到一打造美股自動化交易平台
按一下 進入設定
使用 API 交易可以說是程式交易或自動化交易的最後一哩路,利用程式判斷與執行交易能夠確保交易的穩定性與時效性,再加上人為心理面對於虧損時是不容易痛下決心,所以利用程式果斷執行停損停利是避免隔日沖變成隔年沖的最佳幫手。
除了可以執行停損停利外,使用 API 也可以執行較為高頻的交易策略,例如某些套利的機會轉眼即逝,人工看到再選擇價格執行根本就太慢,而且也會使我們沒辦法離開電腦,必須隨時盯著行情報價尋找交易機會,如果我們可以利用程式自動偵測交易訊號,並迅速果斷執行,將會大大的提升我們的效率與生活的舒適度。
美股的交易時段大部分都在亞洲時區睡覺的時間,常常遇到極端行情時,我們只有在隔天睡醒了才知道,要砍部位或是進場也只能在隔天開盤才有辦法處理,這時候會大大增加對於美股 API 的需求,API 主要提供幾個功能,提供歷史的股價、即時行情、下單交易與帳戶部位資訊等,我們就可以設計一套提醒或自動下單的決策流程,全部依照自己設計的邏輯,建立一套屬於自己的自動交易分析平台。

TD Ameritrade 中文稱為德美利證券,於1971年成立,股票代號為 AMTD,為美國最大的證券經紀商之一,2019年遭嘉信理財(Charles Schwab)合併,但仍為獨立的經紀商個體,未來正式合併後可能擁有嘉信的美元海外提款卡功能,交易產品為美國股票、ETF、美股選擇權、期貨、外匯與債券等。
優點:
缺點:
由於 TD Ameritrade 並沒有官方的 Python 套件,所以都必須要自己串接 API ,我們將透過一堂約 10 小時左右系統性的學習,讓大家都能動手實作 API 每項功能,在基本的 API 元件完成後,在最後一個章節會跟大家討論分享如何建立一套完整的自動交易體系。
為了讓這門課程更廣泛的適用於各階層的新手或高手,透過兩個小章節的內容帶大家快速了解美股市場與程式交易概念,有了這些基礎的框架後,在未來撰寫自動交易應用或交易策略時,更不會有瞎忙的迷失感。
TD 開發帳戶與 TD 交易帳戶是分開來的,部分資料其實是不需要登入真實交易帳戶就可以取得的,連日內的資料都可以輕鬆取得。
我們在兩個章節中會手把手帶著大家將手動電腦或手機交易會用到的每個功能,例如帳戶可用資金有多少?與自動下單並委託新刪單。此時就必須要使用到 TD Ameritrade 的實際交易帳戶,請大家開始學習時務必確保交易帳戶為正常可使用狀態。
# 建立TD Ameritrade API 物件,並進行登入驗證
TD = TDAmeritrade(username = username, password = password, account=account, apikey = apikey)
# 取得AAPL日內即時1分K線 -> pd.DataFrame
intraday_price_history = TD.get_intraday_history('AAPL')
# 取得AAPL Level I 即時報價 -> dict
TD.get_quotes(['AAPL'])
# 取得帳戶中所有部位明細 -> dict
TD.get_account()
課程內容包含「股票」與「選擇權」下單,並分別解釋與示範委託單建立、修改與刪除。
# 以限價單132買入100股AAPL -> dict
TD.stock_order(simulation_order=False, symbol='AAPL', BuySell='Buy', price=132, qty=100)
# 取得有效委託單 -> dict
TD.get_working_orders()
# 取消所有有效委託單 -> dict
TD.cancel_all_orders()
透過多個完整自動化交易的示範,能夠讓學員能夠活用此程式交易架構,並累積開發經驗,可自由延伸加入不同策略元件或交易工具,這個單元我們會一起做出以下專案:
選擇權在交易上難度較高,除了本身參數較多外,另有一些選擇權特有的性質可供交易,例如 Gamma、Theta 與 Vega;選擇權複式單策略彈性更高且複雜,提供給進階的交易人作使用,預計單元如下:
如果您購買的是募資課程,請在課程的【簡介】中查看開課時間,募資課程將於開課時間所述日期開放同學上課。
若您購買的是一般課程(開放上課課程),則在購買完成後可以立即開始觀看。
所有線上課程皆不受時間限制,享無限次永久觀看!
請問現在td的api暫時停止申請,我們無法用上課的知識練習,請問有解決的方式嗎?
根據TD Ameritrade的官方說明,未來合併至Charles Schawab後,大多API內容是不變的,包含:
1. 行情資料或歷史資料
2. 帳戶資訊
3. 委託下單
唯一會變得就是要從TD的網址改為Schwab,所以可以先行學習,未來等待合併完成之後,就可以直接適用。