[程式交易DIY] 第一章:用Excel/VBA爬取交易所API資料(幣安版)
--
2019/11/15更新:本篇把實際應用程式碼改為使用幣安Binance的API操作,除前言與教學影片外將全面取代原本Cobinhood內容。使用幣安乃因該所為目前業界領先之公司,若讀者有其他要求,可以來訊告知,謝謝!
2019/5/23更新:因為示範的交易所即將停業,恐怕有緣且需要的讀者以後難以實做,未來將會規劃來檢查更新一下是否有更廣義的講法或是範例,不好意思。
網路爬蟲、程式交易,不管你有沒有聽過,這些都是早已擴散到業餘者生活圈多年的老伎倆。在這個年頭,交易界更前沿的機器人/人工智慧交易才是值得討論的技術議題。然而,即便在專業者眼中已經如呼吸一般的簡單小工具,對一些人來說還是有些進入門檻(例如我)。
說實在話,時下許多投資平台的軟體、APP,已經能滿足大部分人的操作需求。加上因為配合使用者習慣、精簡軟體介面跟避險一些法規責任,市面上具有客製化的自動追蹤、運算甚至運行交易決策功能的投資軟體仍然不普及,大部分仍要收取可觀的費用才能購得。也因此,「全民胖手指」[1]的時代仍然沒有臨到人間。對於散戶來說,自動交易的妄想也只在付出大額資金購買小程式(還不保證勝利)與獨自奮戰一竅不通的程式碼來實現。
這種對專業者簡單到不屑一顧、對外行人卻不得其門而入的技術,不消說,肯定是非常適合我這半吊子來介紹。我預計分三個部份來簡單分享:以Excel/VBA爬取資料(第一章)、資料的應用與有目的地擷取(第二章)、使用Excel/VBA進行掛單動作(第三章)。
由於個人最近開發API[2]小客戶端工具的目的就是為了使用數位貨幣交易所Cobinhood[3]來自動交易,所以本系列自然也都用Cobinhood的接口環境來示範。不過別擔心,這玩意兒就是這樣,一訣通萬萬通,其他網站的資料基本上只要有使用類似傳輸協定皆大同小異。有什麼問題也歡迎提出討論!(因Cobinhood停業,本文修改為Binance)
這一章大致會分以下標題討論:
(一) 為什麼使用Excel/VBA?
(二) 簡介架構與目標設定
(三) 引用資料解析工具
(四) 安排工作表/表格
(五) 取用線上資料與解析
(六) 簡單安排巨集啟動按鈕
(一) 為什麼使用Excel/VBA?
(這段純粹是選擇工具的心路歷程跟建議,趕時間的話請直接前進下段。)
想我某次在討論API設計的群組(羞恥地)發了我的程式碼做討論,立刻有人發聲:”Oh god, is that visual basic?”, ”looks like msxml sucks(big surprise)”。由於先天帶了個Basic又基礎好上手,VB/VBA一直是程式設計師鄙視鍊(Excel 的 VBA 現在還算是辦公利器嗎?)的最底層,我們請Scratch先不要說話。可是,附著在微軟辦公軟體霸權Office上,VBA對於非專科學生跟上班族的可接近性非常地高,加上Excel在資料處理上眾多能力神器、難度小兒的功能內建,因此一般人藉由兩者的結合,不用經過太多學習上的磨難即可完成許多自建功能設計。
在Excel上使用VBA來搭建個人化資料處理應用,除了資料結構安排直覺-工作表、格要擺哪就擺哪比較不用預先設計,實在想不出該怎麼用程式語言做時,掛個”.application”還能偷用Excel裡原生的函數集。我相信對門外漢而言,在這種環境學習基礎運作,比引用高手們含辛茹苦創作的API指令/函數庫好上許多。啊就不會寫程式了,函式集建再好、效率再高,即便各種防呆、註解、除錯訊息、說明文件都帶上,但不好意思,只知道這函式怎麼用,前後該安排哪些程式碼,還是沒個概念啊!這世上很少有這樣好心耐煩的高手肯免費分解動作送佛送到西還附贈圖形介面教學。用Excel的話,哪個環節失敗了,好歹仍能建個表格來手動剪剪貼貼,電腦能做的咱人也行,抬頭挺胸當阿Q。
然而用這工具還是些侷限的:
1.運作效率較低落,畢竟軟體龐大,沒辦法精簡到只裝備自己需要的功能。2.目前難以擴展到網路、行動應用上,或產出單一執行檔帶著走。
3.官方說明文件爛到令人切腹,自學入門容易但進階困難。(微軟不EY)
所以如果你有其他擴展應用的打算,Excel/VBA現階段就不太適合你。