前言
除了在Day6上面寫的功能,發現合約還有很多東西可以玩。
概況
登入後,直接使用api.Contracts
,觀看可以使用的資料:
- Indexs=(OTC, TSE)
- Stocks=(OES, OTC, TSE)
- Futures=(BRF, BTF, CAF, CBF, CCF, CDF, CE1, CEF, CFF, CGF, CHF, CJ1, CJF, CKF, CLF, CM1, CMF, CNF, CQF, CRF, CSF, CUF, CWF, CYF, CZF, DC1, DCF, DD1, DDF, DEF, DFF, DGF, DHF, DIF, DJF, DKF, DLF, DN1, DNF, DOF, DP1, DPF, DQF, DSF, DVF, DWF, DXF, DYF, DZ1, DZF, E4F, EEF, EGF, EHF, EMF, EP1, EPF, ERF, EXF, EYF, EZF, F1F, FBF, FE1, FEF, FF1, FFF, FGF, FKF, FNF, FQF, FRF, FTF, FVF, FWF, FXF, FYF, FZF, G2F, GAF, GCF, GDF, GHF, GIF, GJF, GLF, GMF, GNF, GOF, GRF, GTF, GUF, GWF, GXF, GZF, HAF, HBF, HCF, HHF, HI1, HIF, HLF, HOF, HSF, HYF, IA1, IAF, IHF, IIF, IJF, IMF, IOF, IPF, IQF, IRF, ITF, IXF, IYF, IZF, JBF, JF1, JFF, JMF, JNF, JPF, JSF, JWF, JZF, KAF, KBF, KCF, KDF, KEF, KFF, KGF, KIF, KKF, KLF, KOF, KP1, KPF, KSF, KUF, KWF, LBF, LCF, LEF, LIF, LMF, LO1, LOF, LQF, LRF, LTF, LUF, LV1, LVF, LWF, LXF, LYF, MAF, MBF, MJF, MKF, MPF, MQF, MVF, MX5, MXF, MYF, NAF, NBF, NCF, NDF, NEF, NGF, NI1, NIF, NJF, NLF, NMF, NOF, NQF, NSF, NUF, NVF, NWF, NXF, NYF, NZF, OAF, OBF, OCF, ODF, OEF, OHF, OJF, OKF, OLF, OMF, OOF, OPF, OQF, ORF, OSF, OTF, OUF, OVF, OWF, OXF, OYF, OZF, PAF, PBF, PCF, PDF, PEF, PFF, PGF, PHF, PIF, PJF, PKF, PL1, PLF, PMF, PNF, POF, PPF, PQF, PRF, PSF, PTF, PUF, PVF, PWF, PXF, PYF, PZF, QAF, QBF, QCF, QDF, QEF, QFF, QGF, QHF, QIF, QJF, QKF, QLF, QM1, QMF, QNF, QOF, QPF, QQF, QRF, QSF, RHF, RTF, SPF, T5F, TGF, TJF, TXF, UDF, UNF, XAF, XBF, XEF, XIF, XJF, ZEF)
- Options=(CAO, CBO, CCO, CDA, CDO, CEA, CEO, CFO, CGO, CHO, CJO, CKO, CLO, CMO, CNO, CQO, CRO, CSO, CZO, DCO, DEO, DFO, DGO, DHO, DJO, DKO, DLO, DNO, DOO, DPO, DQO, DSO, DVO, DWO, DXO, GIO, GXO, HCO, IJO, LOO, NYO, NZO, OAO, OBO, OCO, OJO, OKO, OOO, OZO, QBO, RHO, RTO, TEO, TFO, TGO, TX5, TXO)
可以看得出來有四類,分別是指數、股票、期貨、選擇權,總類眾多。上次介紹了股票,這次拿指數和期貨來觀察。
取得合約資訊
指數
指數有分成:OTC, TSE,分別代表台灣目前兩個交易市場,櫃檯買賣中心(OTC)以及證券交易所(TSE)。首先我們取得證交所的資料:api.Contracts.Indexs["TSE"]
TSE(TSE001, TSE002, TSE003, TSE004, TSE005, TSE006, TSE008, TSE010, TSE015, TSE016, TSE017, TSE018, TSE019, TSE020, TSE021, TSE022, TSE023, TSE024, TSE025, TSE026, TSE027, TSE028, TSE029, TSE030, TSE031, TSE032, TSE033, TSE034, TSE035, TSE036, TSE037, TSE038, TSE039, TSE040, TSE041, TSE042, TSE043, TSE053, TSE054, TSE055, TSE056, TSE057, TSE058, TSE059, TSE060, TSE061, TSE062, TSE064, TSE065, TSE066, TSE067, TSE068, TSE069, TSE070, TSE071, TSE072, TSE073, TSE074, TSE075, TSE076, TSE077, TSE078, TSE079, TSE081, TSE082, TSE083, TSE084, TSE085, TSE086, TSE087, TSE088, TSE089, TSE090, TSE091, TSE092, TSE093, TSE094, TSE095, TSE096, TSE097, TSE098, TSE099)
可以看到很多TSE
開頭的資料,表示在這邊的資料集目錄底下,有這麼多的指數商品可以查詢。假設我們選擇第一個,也就是TSE001
,這時要把TSE
拿掉,只留001
放進程式裡面:
api.Contracts.Indexs["001"]
就取得在這系統中,加權指數的合約資訊。
exchange=<Exchange.TSE: 'TSE'> code='001' symbol='TSE001' name='加權指數'
同樣的,直接使用Symbol方式也可以取得上列資料:
api.Contracts.Indexs.TSE.TSE001
期貨
因為期貨種類眾多,這邊就直接選擇臺指期TXF
,就會使用api.Contracts.Futures["TXF"]
,就會取得:
TXF(TXF202112, TXF202110, TXF202206, TXF202203, TXF202111, TXF202209, TXFR1, TXFR2)
可以得到近期的契約狀況,可以看到近期以及遠期契約,也不用像之前用數的方式去找,直接從列表中取得即可。
同樣的使用Symbol也可以達到相同的目的:
api.Contracts.Futures.TXF
結論
這樣就可以藉由合約,取得所有商品的代碼,無論是指數、股票、期貨還是選擇權,不用像Day6一樣用算的,或是記憶代碼,直接從清單取得。假設要所有市場資料,直接跑一個for
迴圈即可,不用大費周章的從別地取得資料。