iT邦幫忙

2021 iThome 鐵人賽

DAY 30
0
永豐金融APIs

錢進!永豐金融APIs程式串接實戰最前線系列 第 30

Day30 - 鐵人賽永豐APIs實戰30天,跪著都要完賽。

終於到了第30天了,對於第一次參加iThome鐵人賽的我而言覺得有點不真實呀,可以發表這篇文章有和想當年在寫論文時(嗯,很久很久以前),最後寫誌謝文的感覺竟然是差不多的。(感動)

https://ithelp.ithome.com.tw/upload/images/20211014/20130354Oc0ny70hGy.png

起跑,完賽,這個歷程

如同第一篇提到的,其實是收到鐵人賽報名最後一天的iThome Email,臨時起意報名。主題也是在極短時間下選定,並且在隔日就必須開賽。一個月滿滿30天需要每日寫技術文章我覺得這件事本身是有難度的,但難度往往不是在撰文這個過程,而是在撰文之前對當日需要實作項目的研究以及測試與驗證。尤其是主題本來並非自己非常熟悉的時候,或者是自虐硬要選擇自己也不是最熟的技術來實作時候。

再來就是一天打算寫進多少內容,其實有些內容可以拆很多天來寫,但又覺得這樣有一點空虛(自虐是嗎),所以導致每天想維持一定的質與量時,這過程蠻辛苦的。一下班回家後就是立馬坐在電腦前,花上3~4小時以上在完成一篇文章,很怕斷更了,先前又經歷幾天身體不適的狀態,這個挑戰沒想到有如此大的壓力。(就是不認輸呀!)

遇到連假時(參賽期遇到兩個連假,中秋與國慶連假),原本安排的出遊行程也得撥出時間來趕進度,或者是需要事先多寫一點,以防止休假時的不可控狀況。有些時候一次研究多一點內容時,還可以至少多出個一天庫存,但有時候測試驗證遇到問題卡住時,就真的非常驚險,有幾天加上身體不適時真的是趕到最後一刻才成功發文。

不過大概第8~15天時,是最難熬的,除了時間安排與壓力外,看不到路的盡頭時是最容易萌生放棄念頭。但一但過了一半,就覺得哪有不跑完的道理,牙咬著,跪著都要完賽呀

過程中的收獲

永豐APIs這個技術推廣組別,有兩個子題目:

  1. [豐收款] 永豐銀行線上收付款服務API (主要提供給電商的金流服務,讓顧客可以使用ATM轉帳到虛擬帳戶或信用卡刷卡)
  2. [Shioaji] 永豐證券程式交易Shioaji API (使用範圍涵蓋股票、期貨、選擇權)

我大概花在豐收款的項目八成的時間,然後Shioaji大約佔兩成。這兩個子題目我都蠻有興趣的,原本想各寫一半,但這種冒然說走就走的參賽決定,事與願違是鐵定發生的事,但自己覺得欣慰的是,這兩個子主題我都參與了,也實作到我想要的程度。最後用兩天的時間塞了很多Shioaji可能正常要用10天來寫的內容,雖然不夠深入,但我覺得仍然有相當程度的收獲。

有關豐收款線上收付款金流服務

就先談談豐收款線上收付款服務帶來的收獲。

呼叫與撰寫API的經驗大部份人都有,即使叫用過程需要基礎的呼叫端身份驗證流程也作過,但是以銀行金流嚴謹級別實作倒是我第一次嘗試。先前開發系統時就會使用到AES、RSA等的加解密,雜湊或者Base64編碼等的運用也是很常有的事,但要把這些安全或驗證、轉換的技術運用到API的基礎呼叫流程中,來強化API使用的安全性,降低被有心人士篡改的可能性,當然勢必需要進行繁鎖的安全運算以成高規格資安的目標。這裡可以學到一個重要的觀念就是,安全的流程即便寫成公開規格書,甚至讓這些參加鐵人賽的作者白熱化的研究,仍然可經的起檢視與考驗,這才是真資安。資安絕對不是用一堆「只要我們不講出去的規則」來實踐。

所以這裡學到相當重要的是打造安全API的實作課,即使你需要的是資安沒那麼要求的資料交換方式,但你都了解與學會100%最嚴謹是怎麼一回事了,接下來你就可以自行斟酌向下修正到需要與運算速度取得平衡的作法。

其實真正這樣實作完所有的功能後,每一個服務功能的加密打包呼叫以及回傳值的解密取回之繁複,的真的覺得即使知道規則要破解真的是幾乎不可能的事。有Follow每一篇這樣下來的朋友們,就會知道安全的關鍵點在哪裡,這裡也不再贅述。

Day26文章中有特別寫一篇詳細說明。

有關Shioaji的證券程式量化交易

若是常常覺得自己定下的交易原則總是因為人性弱點無法紀律執行,那麼學會Shioaji API真的可以好好的來試一次,夢想中的違反人性的紀律投資!只要你是永豐證券戶,你恰好也會程式開發,那麼這個絕對不是夢。當然前提是你必需確認你的code沒有bug,不然要買500股卻買成500張,後果不勘設想呀。

在我的鐵人賽中,只把Shioaji當成番外篇在解說,用我的方式快速的引導想使用的朋友入門,快速把基礎的功能帶過,這邊不會提如何設計交易策略,這塊就留給金融高手。只要看完最後兩篇,我相信你至少可以完成由程式來自動下單的夢想!

程式量化交易真的不是夢,學好Python學好Shioaji,很有機會幫你賺到人性弱點下賺不到的錢,當然首先你需要有一些銀彈來支撐這個嘗試性的夢想呀 (也才可cover一下寫錯code掛錯單的風險)。

寫在最後

這真的是一件瘋狂的事,參加且完成iThome鐵人賽。

以後還會不會參加我不知道,但我覺得以30天來養成一個技能,熟悉一件原本沒有接觸的事,將學習一件事的過程公開紀錄下來,這個習慣與經驗本身就很值得推薦給朋友們了,有機會你們一定也要試試看,挑戰自己,相當過癮。

未來也可能用這樣的好習慣,撰寫更多自己沒機會好好弄東的各項技能。

謝謝iThome與辦的好活動,謝謝永豐金提供的技術套件與測試環境。

放上iThome鐵人賽的Slogan:
https://ithelp.ithome.com.tw/upload/images/20211014/20130354FMa8GYJ1ga.png

30天鐵人賽完賽,
我做到了!

/images/emoticon/emoticon12.gif


上一篇
Day29 - [Shioaji] 超入門!永豐證券程式交易API快速上手 (2)
系列文
錢進!永豐金融APIs程式串接實戰最前線30

尚未有邦友留言

立即登入留言