網頁

2019年2月9日 星期六

將台指期 Ticks 資料彙總成 5 分K資料

今天我試出了一個新的方式 , 不需先彙總成一分K就可以直接將台指期的 Ticks 資料彙總成五分K的資料 , 程式碼如下 :



# 從 Excel 讀入 ticks row data
fileName = input('請輸入台指期原始資料 (D:\HistoryData\MXF\) Excel 檔案名稱 \
                 (不必包含 .xlsx) : ')

book = xlrd.open_workbook('D:\\HistoryData\\MXF\\' + fileName + '.xlsx')
sheet = book.sheet_by_index(0)

# 先開好一個空的 DataFrame
ticks = pd.DataFrame(columns=['date', 'open', 'close', 'high', 'low', 
                              'volume', 'time'])

for row in range(sheet.nrows):
    timesecond = sheet.cell_value(row,1)
    price = sheet.cell_value(row,2) / 100
    volume = sheet.cell_value(row,3)
    newRow = [[timesecond, price, price, price, price, volume, timesecond]]
    ticks = ticks.append(pd.DataFrame(newRow, columns=['date', 'open', 
                                                       'close', 'high', 
                                                       'low', 'volume', 
                                                       'time'
                                                       ]), ignore_index=True)

k5 = pd.DataFrame(columns=['date', 'open', 'close', 'high', 'low', 
                           'volume', 'time'])
ticks['date'] = pd.to_datetime(ticks['date'], unit='s')
ticks['time'] = pd.to_timedelta(ticks['time'], unit='s')
ticks.index = ticks['date']
k5 = ticks.resample('5T', closed='left', label='left').apply({
        'open':'first', 'close':'last', 'high':'max', 
        'low':'min', 'volume':'sum', 'time':'first'})

沒有留言:

張貼留言