今天我試出了一個新的方式 , 不需先彙總成一分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'})
arrow
arrow
    文章標籤
    Python
    全站熱搜

    Jump 發表在 痞客邦 留言(0) 人氣()