Member-only story

[程式交易DIY] 第二章:有目的地擷取資料與整理

Woodrow K. Deng
14 min readMay 24, 2018

--

前篇文中我們已快速帶過API工具使用的理由與簡介,並初步設定好環境,擷取到第一筆資料。本篇將接續進行到重要市場資料的擷取與整理。以下先提供前章連結供複習參考:

2019/3/20 新增備註:本文先前程式碼中為使取得資料保持更新,使用VBA的Now()作時間戳記附於請求網址後,後來格式不被認可。現經測試後發現現在已可不加戳記保持緩存更新了,故可刪掉。保險起見,本文程式碼將Now()修改為Rnd(),已更新在文中。
2019/5/23更新:因為示範的交易所即將停業,恐怕有緣且需要的讀者以後難以實做,未來將會規劃來檢查更新一下是否有更廣義的講法或是範例,不好意思。
2019/12/19更新:本篇把實際應用程式碼改為使用
幣安Binance的API操作,除前言與教學影片外將全面取代原本Cobinhood內容。使用幣安乃因該所為目前業界領先之公司,若讀者有其他要求,可以來訊告知,謝謝!

首先記住,盡量只取用自己需要的資料

即便現在網路連線速度已今非昔比,在跟網站互動進行程式交易時,我們要記在心上的第一件事情是:一個交易所上面的資料不可能幾秒鐘就隨便載完。針對伺服器作無限制「砍站」[1]行為絕對是NG的。伺服器上有零瑯滿目、隨時都在變動的訊息,而我們的電腦也不是超級電腦,所以首先要作的是慎選資料範圍-要多少就只拿多少,不要算超過自己需用範圍的資料。

Photo by imgix on Unsplash

筆者認為,程式交易分為五個部分:
取得資料 => 使用特定策略監看或作出決策 => 回測資料 (本系列暫不討論)
=> 下單與控單 => 歷史紀錄

這個流程是動態的,因不同的策略所需的資料特徵不同,而操作過程中設計者也會從歷史紀錄不停推敲改善控單跟投資的策略。為了這些狀況,不建議將程式設計得太死,要留有一部分的彈性:註解好好寫、能不要寫死的數字或字串就盡量放到可以看得懂的變數名稱裡、重複步驟盡量拉出來寫成函數/副程式...,讓以後更新升級變簡單而不會東落西落。

怎麼把程式碼設計得有彈性又簡潔有力是專業的藝術,這裡聊聊僅供參考,哪天您渾身不對勁想搞個大傢伙時,上述那些事情強烈建議先注意。

--

--

Woodrow K. Deng
Woodrow K. Deng

Written by Woodrow K. Deng

醫材研發人員/加密貨幣投資者/跨領域科學愛好人

Responses (2)