calvinhorng 發表於 13-6-18 08:14

利用 Python 抓取資料導入 AB

之前在別的主題內討論了很多如何抓證交所、期交所的資料
我把相關檔案放到這裡,有興趣的大大們可以參考參考。應該還有很大的修改空間
不過目前我自己用還蠻 OK 的

參考壓縮檔內的README.TXT 或以下文字

(1) TSE_CLOSE.bat 下載上市股票(不含權證)收盤資料
    指令格式範例 C:\python33\python C:\盤後\TSE_CLOSE.py 3 C:\盤後\TSE\
    (第一個是Python 執行檔的路徑)上述例子為 C:\python33\python
    (第二個是Python Script 的路徑)上述例子為 C:\盤後\TSE_CLOSE.py
    (第三個的數字是檔案下載的日數,以今日回算) 上述例子為 3 , 如果以 2013/6/9 看,數字3就是 2013/6/7 ~ 2013/6/9
    (最後一個是輸出檔案的目錄) 上述例子為 C:\盤後\TSE\
    執行後 在C:\盤後\TSE\ 會產生兩個次目錄 CLOSE 與 AB
    CLOSE內存放證交所的原始資料
    AB 是彙整後的資料 可以給AB import 用import 的格式如下 (參考 TW_STOCK.format)
   
    # Format definition file generated automatically
    # by AmiBroker's ASCII Import Wizard
    $FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume, Fullname
    $SKIPLINES 1
    $SEPARATOR ,
    $CONT 1
    $GROUP 255
    $AUTOADD 1
    $DEBUG 1
   
   
(2) OTC_CLOSE.bat 下載上櫃股票(不含權證)收盤資料
    指令格式範例 C:\python33\python C:\盤後\OTC_CLOSE.py 3 C:\盤後\OTC\
    (第一個是Python 執行檔的路徑)上述例子為 C:\python33\python
    (第二個是Python Script 的路徑)上述例子為 C:\盤後\OTC_CLOSE.py
    (第三個的數字是檔案下載的日數,以今日回算) 上述例子為 3 , 如果以 2013/6/9 看,數字3就是 2013/6/7 ~ 2013/6/9
    (最後一個是輸出檔案的目錄) 上述例子為 C:\盤後\OTC\
    執行後 在C:\盤後\OTC\ 會產生兩個次目錄 CLOSE 與 AB
    CLOSE內存放證交所的原始資料
    AB 是彙整後的資料 可以給AB import 用import 的格式 (參考 TW_STOCK.format)
(3) IDX_15Sec_1Min.bat 與IDX_15Sec_Day.bat 下載指數類收盤資料
    指令格式範例分別為 C:\python33\python C:\盤後\IDX_15Sec_1Min.py 1 C:\盤後\IDX\
                        C:\python33\python C:\盤後\IDX_15Sec_Day.py 1 C:\盤後\IDX\
                        
    (第一個是Python 執行檔的路徑)上述例子為 C:\python33\python
    (第二個是Python Script 的路徑)上述例子分別為 C:\盤後\IDX_15Sec_1Min.py C:\盤後\IDX_15Sec_Day.py
    (第三個的數字是檔案下載的日數,以今日回算) 上述例子為 1 , 如果以 2013/6/9 看,數字1就是2013/6/9
    (最後一個是輸出檔案的目錄) 上述例子為 C:\盤後\IDX\
   
    執行後 在C:\盤後\IDX\ 會產生兩個次目錄 IDX 與 AB
    IDX內存放證交所的原始資料               
    AB 是彙整後的資料 可以給AB import 用import 的格式
    檔案前置文字分別為 1Min_ 與 Day_ 代表 一分鐘K 與 日K
    請注意:匯入AB 時 1Min 與Day 需要的DATABASE 格式不同 (分別參考 IDX_1Min.format 和 IDX_Day.format)
(4) TSE_Vol.bat下載加權指數類收盤資料
    指令格式範例為 C:\python33\python C:\盤後\TSE_vol.py 1 C:\盤後\TSE\
                  
                        
    (第一個是Python 執行檔的路徑)上述例子為 C:\python33\python
    (第二個是Python Script 的路徑)上述例子為 C:\盤後\TSE_vol.py
    (第三個的數字是檔案下載的日數,以今日回算) 上述例子為 1 , 如果以 2013/6/9 看,數字1就是2013/6/9
    (最後一個是輸出檔案的目錄) 上述例子為 C:\盤後\TSE\
   
    執行後 在C:\盤後\TSE\ 會產生兩個次目錄 1Min 與 1MAB
    1Min內存放證交所的原始資料               
    1MAB 是彙整後的資料 可以給AB import 用import 的格式 (參考 TSE_vol.format)

(5) import.bat
    因為不知哪個原因 如果利用工作排程 批次檔的指令建議如下
    start "匯入資料 to AB" c:\python33\python C:\盤後\import.pyD:\AmiBrokerData\TWSTOCK\ C:\盤後\TSE\AB\ C:\盤後\TW_STOCK.format
    (第一個是批次檔另開視窗指令)上述例子為 start
    (第二個是視窗名稱)上述例子為 "匯入資料 to AB"
    (第三個是Python 執行檔的路徑)上述例子為 c:\python33\python
    (第四個是Python Script 的路徑)上述例子為C:\盤後\import.py
    (第五個是要先用AB建立成功的的 DATABASE 路徑,)上述例子為D:\AmiBrokerData\TWSTOCK\
    (第六個是匯入的資料檔案存放路徑)上述例子為 C:\盤後\TSE\AB\
    (最後一個是AB使用的格式檔案) 上述例子為C:\盤後\TW_STOCK.format
   
    執行後 所有在C:\盤後\TSE\AB\ 當原始資料會在匯入完成後移到C:\盤後\TSE\AB\BAK\ 下
    日後如果需要 可以再搬回 C:\盤後\TSE\AB\
    這樣不會重複進行同一檔案的匯入

mead 發表於 13-6-18 08:19

感謝您的分享
感恩

calvinhorng 發表於 13-6-18 08:23

期貨 選擇權
不多做說明 請參考 .bat 和 .py檔案

lwhuang 發表於 13-6-18 14:29

嘆為觀止,目瞪口呆,五體投地

lwhuang 發表於 13-6-19 17:10

本帖最後由 lwhuang 於 13-6-19 17:25 編輯

今天發現怪狀
http://www.twse.com.tw/ch/tradin ... myear=2013&mmon=06#
的成交量是65,566,737,458
但是calvinhorng大的TSE_VOL是去抓
http://www.twse.com.tw/ch/tradin ... ?chk_date=102/06/19
成交量是65,187
不一樣耶,我用2卷商的看盤軟體都是前1個數值

然後TSE_VOL今天的OHLC跟卷商看到的也不同

lwhuang 發表於 13-6-19 17:24

又發現第3個數字
http://www.twse.com.tw/ch/trading/exchange/FMTQIK/genpage/Report201306/201306_F3_1_2.php?STK_NO=&myear=2013&mmon=06#
成交量是66,364,752,234

calvinhorng 發表於 13-6-19 21:09

本帖最後由 calvinhorng 於 13-6-19 21:13 編輯

lwhuang 發表於 13-6-19 17:10 static/image/common/back.gif
今天發現怪狀
http://www.twse.com.tw/ch/tradin ... myear=2013&mmon=06#
的成交量是65,566,737,458

加權指數的日Volume 我是用累積成交金額
http://www.twse.com.tw/ch/trading/exchange/MI_5MINS/genpage/Report201306/A12520130619.php?chk_date=102/06/19
所以 6/19 應該是 65187 百萬元
但是 他沒包括盤後大額交易吧
所以
http://www.twse.com.tw/ch/trading/exchange/FMTQIK/genpage/Report201306/201306_F3_1_2.php?STK_NO=&myear=2013&mmon=06#
66,364,752,234 元 這個金額應該含盤後大額交易
所以 這個比較準

calvinhorng 發表於 13-6-19 21:35

lwhuang 發表於 13-6-19 17:24 static/image/common/back.gif
又發現第3個數字
http://www.twse.com.tw/ch/trading/exchange/FMTQIK/genpage/Report201306/201306_F3_1_2 ...

這個金額應該是比較準的
所以 要修改一下程式碼才行

calvinhorng 發表於 13-6-19 21:55

lwhuang 發表於 13-6-19 17:10 static/image/common/back.gif
今天發現怪狀
http://www.twse.com.tw/ch/tradin ... myear=2013&mmon=06#
的成交量是65,566,737,458


我用 凱基全球理財王
用一分鐘Kexcel 輸出後再存 CSV 格式
和我的CSV 比 應該都一樣 (除了 9:00:00 的 OPEN)
請參考附件內兩個CSV 檔案參考一下

建議你也把卷商的資料輸出來比對一下

還有 用一分鐘K 我發現總成交金額也沒有包括盤後交易金額
所以 證交所的原始資料就有點xxxx了

lwhuang 發表於 13-6-20 10:01

可是open價也很重要呀

lwhuang 發表於 13-6-20 10:27

calvinhorng大這個TSEVOL_20130619.rar裡面沒有修改的原始碼呀

calvinhorng 發表於 13-6-20 16:59

lwhuang 發表於 13-6-20 10:27 static/image/common/back.gif
calvinhorng大這個TSEVOL_20130619.rar裡面沒有修改的原始碼呀

我用的是第一訊息附檔 盤後.rar 內的TSE_vol.py
沒有修改過
你比對後如果有問題 方便放上來 我看一看嗎?

calvinhorng 發表於 13-6-20 18:01

lwhuang 發表於 13-6-20 10:01 static/image/common/back.gif
可是open價也很重要呀

有點搞懂盤商的邏輯,證交所資料(如 http://www.twse.com.tw/ch/trading/exchange/MI_5MINS_INDEX/genpage/Report201306/A12120130620.php?chk_date=102/06/20)把昨日收盤指數當今日9:00:00 的開盤指數
但是盤商是把 9:00:15 的指數當作今日開盤指數
我覺得也是合理 所以改一下 Code
此外 我也把 最後總金額更正
試用一下 看看吧

lwhuang 發表於 13-6-21 18:25

本帖最後由 lwhuang 於 13-6-21 19:02 編輯

價位是跟券商一樣了,但是今天(6/21)的量還是跟富邦e01不同,不過大大的量跟證交所網頁上的一樣了 :) 我準備把他改成精準的數字,不是以億為單位,我是精準狂{:4_112:}

calvinhorng 發表於 13-6-21 22:02

lwhuang 發表於 13-6-21 18:25 static/image/common/back.gif
價位是跟券商一樣了,但是今天(6/21)的量還是跟富邦e01不同,不過大大的量跟證交所網頁上的一樣了 :) 我準 ...

我以前發現證交所有時候還會去改之前的數字
所以 還要偶爾對一對原始資料
{:4_195:}
頁: [1] 2
查看完整版本: 利用 Python 抓取資料導入 AB