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 - this&Object Prototypes Ch3 Objects - Review

>>:  30. 真的结束了

延长赛:码农最後的哄擡价格,高级操作:说出一口聚合分析(下)

没想到有生之年也会遇到必须写延长赛的日子 太失策了 但没写就有个东西卡在那的感觉 真是不苏胡,只好默...

Day 1:前言

背景 这次有幸受到学弟邀请来参加铁人赛,本来是想要写 godot 的教学的(留到之後有机会再分享吧)...

【Vue】Vue Devtools 开发工具

Vue Devtools 是一款扩充 Chorme 浏览器的套件,只需要按照官网上的指示,在浏览器上...

[ Day 22 ] - 阵列资料处理 - forEach

阵列资料处理 - forEach 会将阵列中的每一个元素资料进行处理 使用范例 let dataLi...

我目前常用的思考框架

整理一下,我目前的思考框架,学新的东西时候、解决问题的时候可以用,有时候我也常想要偷懒省略一些步骤,...