Sirius 發表於 16-1-9 15:04

最近30個交易日交易所期貨、選擇權RPT檔案的下載程式

本帖最後由 Sirius 於 16-1-9 15:22 編輯

收到站內朋友發給我的訊息
請問Sirius大
以下程式好像不能用了,交易日可以,但假日會卡住……(略)
其中的程式指的是這篇回覆
原始帖是:[工具] 自動抓近30日期交所期貨rpt檔的python程式

那是2011年做的下載程式,後來有再做了修改,查了記錄,最後一次小修改是2012年,之後就用到現在沒再動過。
當初是「預先」設想,也許會操作期貨,所以「事前準備好」做了這程式,免得到時要用時,還要四處收集RPT。雖然自己一直沒做期貨,我仍然會在交易日盤後執行這支程式下載資料,反正點二下就自動搞定,不會花我額外時間。

現在看到以前的寫法,自己也覺得有點好笑,不過程式一直運作的好好的,暫時就沒有必要去動它了。以後有時間的話,也許會整理一下,放在GitHub上,目前就保持原狀,放上來給coco的會員用。象徵性收1 coco,同時也可了解有多少人用這東西。


下面會貼出說明檔readme.txt的內容,但有部分內容我覺得有必要先在此提出「更正」,以及程式中可能需要調整的部分:
※此處提到的「更正」或程式中可能需要的調整,一般使用者可不予理會。

一、readme.txt的更正
【肆、檔案清單】中提到的文字編碼格式cp950與big-5。事實上這兩者不完全一樣,建議用cp950較保險。
二、程式中可能需要的調整
1. 第24行用了sys.exit()。你若在某些編輯器中的python shell中執行到這行,shell會直接關閉掉,會讓你感到不便。這種在編輯器中執行程式的作法大多是開發時期的作法,若真非得這麼做,請自行調整這裡的寫法。

如果要在Unix-like系統上使用,才需要注意下面幾點
2. 第1行的#!/usr/bin/env python3。因某些Unix沒有env命令,可能要寫成#!/usr/bin/python3
詳見:Using Python on Unix platforms
3. 第96行的os.system("pause")。這是Windows上的用法,請自行改用input()來暫停。

Sirius 發表於 16-2-29 11:00

期交所在2016-2-26日修改了網頁,相關討論請見「期交所改了RPT檔路徑」。
若有用本程式的人,請將26日下載的檔案刪除(應該是選擇權才會有這問題,總之檢查一下檔案大小,或把壓縮檔開啟看看是否發生錯誤)
再照以下方式修改設置檔與主程式後,重新下載。
如果清楚怎麼做,或是已自行做好修改,以下的修改就不用看了。

修改設置檔:
第八項與第十項,補上/DailyDownload;八、期貨資料下載處,最後表示資料夾的「/」符號不可省
url_futures=http://www.taifex.com.tw/DailyDownload/DailyDownload/

;十、選擇權資料下載處
url_options=http://www.taifex.com.tw/DailyDownload/OptionsDailyDownload/修改主程式:
37行與41行,同樣補上/DailyDownload,其餘別動,像這樣
get_files(html_futures, url_futures, 'futures', r"/DailyDownload/DailyDownload/(?P<file>.*)'")

get_files(html_options, url_options, 'options', r"/DailyDownload/OptionsDailyDownload/(?P<file>.*)'")

另外,期交所新提供的csv格式,其內容其實與rpt一樣,所以本程式沒打算修改成下載csv
若真需要csv,只要把rpt的壓縮檔解開後,將副檔名的.rpt改成.csv即可

因本程式用的人不多,所以沒打算做進一步後續更新,也不建議再下載一樓的舊檔使用,除非你懂得修改或會寫程式。打算只提供給會程式的人參考,並自行修改。很久前寫的東西,有些寫法看來很可笑,請別見怪。
一樓已無法修改,無法移除下載檔,若花了一coco下載檔案卻不滿意,請LDS一次就自救了。

Sirius 發表於 16-1-9 15:05

dl_tf說明
說明檔版號記錄:v0.0-2011-3-13|1.0-3-15|1.0.0.1-3-16|v2.0-2011-5-12

目錄
壹、軟體功能
貳、系統需求
參、適用與不適用情況
肆、檔案清單
伍、軟體使用方式
陸、注意事項
柒、軟體授權

【壹、軟體功能】
1.從台灣期指交易所網站下載已公布的近30日期指、選擇選每筆交易成交資料
2.已下載過的檔案,不重複下載,減少不必要的網路存取與流量(避免被當成不受歡迎的訪客)

【貳、系統需求】
使用本軟體之必要條件如下
1.Python 3.2或以後的版本
2.作業系統:能執行Python 3.2之作業系統皆可(Windows 9x系列不可)
3.正常的網路連線

【參、適用與不適用情況】
一、適用
1.可用在長期連線的網路主機,以排程方式自動執行本程式,不用人工執行。如此使用者可放心去渡長假二、三月,不用擔心漏接檔案。(例外:如期交所更改系統,導致無法繼續使用原有下載方式…)
2.習慣進行一次設置後就可以不管往後頻繁設置動作的人。首次設置好後,除非使用環境改變,不然往後只管執行程式並直接取用下載好的檔案即可。
3.電腦規格不高,不方便使用.net framework版等等的其它下載軟體。
4.可習慣使用非圖形介面的使用者。
5.簡約主義者。是的,執行環境設置好後,只要滑鼠點兩下(或是另行建立其它種方便的執行方式),一指就搞定,其它都別管。

二、不適用
1.堅持使用圖形介面的使用者
2.不想另外加裝Python的使用者。Python這部份的安裝與使用問題,需請使用者自行解決。
如果很在意這類不適用的問題,衷心懇求:別用本軟體,這不會是你想要的東西,有其它類似功能且不錯的軟體可供選擇。

【肆、檔案清單】
1.dl_tf.cfg:使用設置檔,內含有設置說明。
2.dl_tf.py:主程式。以Python 3.2撰寫。
3.readme.txt:本說明檔
4.dl_tf.log:在使用設置檔中有啟用記錄檔功能,程式才會產生此類記錄檔。檔名後可能有日期,詳見設置檔中的說明。
所附檔案皆是純文字檔,都可以用純文字編輯器開啟與編輯。文字編碼格式,除第2項主程式為utf-8以外,其餘皆為cp950(或big-5)。
設置檔中,前面加 ; 符號者,表示該行是註釋或說明文字,不是設置值。

【伍、軟體使用方式】
1.檔案解開後放同一目錄下,必須是可寫入資料的目錄
2.編輯dl_tf.cfg,依裡面的設置說明調整好必要的設置項目即可,其它可不動。若都不調整就用預設值。
3.執行dl_tf.py
4.自行到設置的下載目錄取得檔案

【陸、注意事項】
1.若基於某種原因,想重新下載以前已下載過的檔案(如之前的檔案壞了…。當然,必須是期交所網站上還在的檔案才能重新下載),請先到下載目錄下,把想要重新下載的檔案先行移走或刪除。

【柒、軟體授權】
GPL
http://www.certifiedchinesetranslation.com/openaccess/gnuv3-tc.html
http://www.gnu.org/licenses/gpl.html

Sirius 發表於 16-1-9 15:10

設置檔,記得依自己的情況做調整

;設置檔,以人工編輯,通常只需改前三項。程式唯讀,不會寫資料進來。
;v2.0-2011-5-12
;v1.0-2011-3-16
;v0.0-2011-3-12

;一、會自動建立下載存放檔案的目錄。其下自動建furtures,options兩個子目錄,分別放期貨、選擇權的檔案
;在Windows環境下,目錄分隔符號用'/'即可。或者'\\',別光用單獨的'\'符號
download_dir=D:/Downloads/stockData/TWFEX

;二、設為1:表示要下載期貨檔案,0(或非1):不下載期貨檔
download_futures=1

;三、1:表要下載選擇權檔案,0(或非1):不下載
download_options=1

;四、訊息輸出方式。0:關閉。1:螢幕(stdout)。2:螢幕,而且執行完後將畫面暫停。
message_output=2

;五、記錄檔模式。0:關閉。1:覆寫(overwrite)模式,會蓋掉原有記錄。2:附加(append)模式,不會蓋掉原有記錄,檔案會越來越大。3:檔名後面加上執行日期做區分,覆寫模式。
;模式1, 2的檔名為dl_tf.log,模式3的檔名型式為dl_tfYYYYMMDD.log,YYYYMMDD是日期字串。
log_mode=0

;六、修改所下載的檔案讀取權限。在Unix liked的機器上才有作用
;0:不修改。1:權限設為755
chmod=0

;七、網址:前30個交易日期貨每筆成交資料
html_futures=http://www.taifex.com.tw/chinese/3/3_1_3.asp

;八、期貨資料下載處,最後表示資料夾的「/」符號不可省
url_futures=http://www.taifex.com.tw/DailyDownload/

;九、網址:前30個交易日選擇權每筆成交資料
html_options=http://www.taifex.com.tw/chinese/3/3_2_4.asp

;十、選擇權資料下載處
url_options=http://www.taifex.com.tw/OptionsDailyDownload/


Sirius 發表於 16-1-9 15:16

對於這支程式,原本有個想法:也再可做個GUI圖形介面,調用腳本中的程式碼
一般使用者可用圖形介面
若想在沒有圖形介面的伺服器上做定時自動執行,就用腳本程式
這樣就可一魚兩吃
以後有機會再來做

lwhuang 發表於 16-1-9 21:19

好厲害,感謝~
我喜歡文字模式的,可以排程自動化
你有沒有做無界面轉檔程式?rpt轉成1min k, tick...

Sirius 發表於 16-1-9 22:22

本帖最後由 Sirius 於 16-1-9 22:28 編輯

lwhuang 發表於 16-1-9 21:19 static/image/common/back.gif
好厲害,感謝~
我喜歡文字模式的,可以排程自動化
你有沒有做無界面轉檔程式?rpt轉成1min k, tick... ...
沒有,因為自己沒做期貨,所以不很清楚RPT裡面的東西,雖然裡面是純文字資料

之前看過別人的討論,其中的格式或是商品代號曾經改變過幾次,若做轉檔程式,要考慮到這些改變

而且,這種工具有別人做好了,我就懶得動手了。何況,自己也沒用到,就不會想把時間與心思花在這上面
印象中這工具在論壇中也可找到。哦,對了,剛想到,你說的是無界面的,這好像沒人提供

頁: [1]
查看完整版本: 最近30個交易日交易所期貨、選擇權RPT檔案的下載程式