mirror of
https://gitee.com/fasiondog/hikyuu.git
synced 2024-11-30 19:08:48 +08:00
211 lines
8.8 KiB
C++
211 lines
8.8 KiB
C++
#!/usr/bin/python
|
|
# -*- coding: utf8 -*-
|
|
# cp936
|
|
|
|
import tables
|
|
|
|
class FiveMinDataRecordH5File(tables.IsDescription):
|
|
datetime = tables.UInt64Col() #IGNORE:E1101
|
|
openPrice = tables.UInt32Col() #IGNORE:E1101
|
|
highPrice = tables.UInt32Col() #IGNORE:E1101
|
|
lowPrice = tables.UInt32Col() #IGNORE:E1101
|
|
closePrice = tables.UInt32Col() #IGNORE:E1101
|
|
transAmount = tables.UInt64Col() #IGNORE:E1101
|
|
transCount = tables.UInt64Col() #IGNORE:E1101
|
|
|
|
class IndexDataRecordH5File(tables.IsDescription):
|
|
datetime = tables.UInt64Col() #IGNORE:E1101
|
|
start = tables.UInt64Col() #IGNORE:E1101
|
|
|
|
def fenge(src_file_name, dest_file_name):
|
|
src_hdf5 = tables.openFile(src_file_name, mode='r', filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
dest_hdf5 = tables.openFile(dest_file_name, mode = "w", filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
all_table = [x for x in src_hdf5.walkNodes("/data")]
|
|
for i in range(1,len(all_table)):
|
|
src_table = all_table[i]
|
|
print src_table.name
|
|
dest_table = dest_hdf5.createTable("/", src_table.name, FiveMinDataRecordH5File, src_table.name)
|
|
dest_row = dest_table.row
|
|
for x in src_table:
|
|
if x['lowPrice'] <= x['openPrice'] <=x['highPrice'] \
|
|
and x['lowPrice'] <= x['closePrice'] <= x['highPrice']:
|
|
dest_row['datetime'] = x['datetime']
|
|
dest_row['openPrice'] = x['openPrice']
|
|
dest_row['highPrice'] = x['highPrice']
|
|
dest_row['lowPrice'] = x['lowPrice']
|
|
dest_row['closePrice'] = x['closePrice']
|
|
dest_row['transAmount'] = x['transAmount']
|
|
dest_row['transCount'] = x['transCount']
|
|
dest_row.append()
|
|
dest_table.flush()
|
|
|
|
src_hdf5.close()
|
|
dest_hdf5.close()
|
|
|
|
|
|
def fenge2(src_file_name, dest_file_name, table_name_list, lastdate):
|
|
src_hdf5 = tables.openFile(src_file_name, mode='r', filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
dest_hdf5 = tables.openFile(dest_file_name, mode = "w", filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
for src_table_name in table_name_list:
|
|
print src_table_name
|
|
src_table = src_hdf5.getNode("/data", src_table_name)
|
|
try:
|
|
group = dest_hdf5.getNode("/", "data")
|
|
except:
|
|
group = dest_hdf5.createGroup("/", "data")
|
|
dest_table = dest_hdf5.createTable(group, src_table.name, FiveMinDataRecordH5File, src_table.name)
|
|
dest_row = dest_table.row
|
|
for x in src_table:
|
|
if x['datetime'] > lastdate:
|
|
break
|
|
if x['lowPrice'] <= x['openPrice'] <=x['highPrice'] \
|
|
and x['lowPrice'] <= x['closePrice'] <= x['highPrice']:
|
|
dest_row['datetime'] = x['datetime']
|
|
dest_row['openPrice'] = x['openPrice']
|
|
dest_row['highPrice'] = x['highPrice']
|
|
dest_row['lowPrice'] = x['lowPrice']
|
|
dest_row['closePrice'] = x['closePrice']
|
|
dest_row['transAmount'] = x['transAmount']
|
|
dest_row['transCount'] = x['transCount']
|
|
dest_row.append()
|
|
else:
|
|
print x['datetime']
|
|
dest_table.flush()
|
|
|
|
src_hdf5.close()
|
|
dest_hdf5.close()
|
|
|
|
|
|
def fenge3(src_file_name, dest_path):
|
|
src_hdf5 = tables.openFile(src_file_name, mode='r', filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
all_table = [x for x in src_hdf5.walkNodes("/data")]
|
|
for i in range(1,len(all_table)):
|
|
src_table = all_table[i]
|
|
print src_table.name
|
|
dest_file_name = dest_path + "/" + src_table.name[2:] + ".h5"
|
|
dest_hdf5 = tables.openFile(dest_file_name, mode = "w", filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
dest_table = dest_hdf5.createTable("/", "data", FiveMinDataRecordH5File, "data")
|
|
dest_row = dest_table.row
|
|
for x in src_table:
|
|
if x['lowPrice'] <= x['openPrice'] <=x['highPrice'] \
|
|
and x['lowPrice'] <= x['closePrice'] <= x['highPrice']:
|
|
dest_row['datetime'] = x['datetime']
|
|
dest_row['openPrice'] = x['openPrice']
|
|
dest_row['highPrice'] = x['highPrice']
|
|
dest_row['lowPrice'] = x['lowPrice']
|
|
dest_row['closePrice'] = x['closePrice']
|
|
dest_row['transAmount'] = x['transAmount']
|
|
dest_row['transCount'] = x['transCount']
|
|
dest_row.append()
|
|
dest_table.flush()
|
|
dest_hdf5.close()
|
|
|
|
src_hdf5.close()
|
|
|
|
def fenge4(src_file_name, dest_file_name, table_name_list, groupname):
|
|
src_hdf5 = tables.openFile(src_file_name, mode='r', filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
dest_hdf5 = tables.openFile(dest_file_name, mode = "w", filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
for src_table_name in table_name_list:
|
|
print src_table_name
|
|
src_table = src_hdf5.getNode(groupname, src_table_name)
|
|
dest_table = dest_hdf5.createTable(groupname, src_table.name, IndexDataRecordH5File, src_table.name)
|
|
dest_row = dest_table.row
|
|
for x in src_table:
|
|
dest_row['datetime'] = x['datetime']
|
|
dest_row['start'] = x['start']
|
|
dest_row.append()
|
|
dest_table.flush()
|
|
|
|
src_hdf5.close()
|
|
dest_hdf5.close()
|
|
|
|
def fenge5(src_file_name, dest_file_name):
|
|
src_hdf5 = tables.openFile(src_file_name, mode='r', filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
dest_hdf5 = tables.openFile(dest_file_name, mode = "w", filters=tables.Filters(complevel=9,complib='zlib', shuffle=True))
|
|
|
|
all_table = [x for x in src_hdf5.walkNodes("/data")]
|
|
for i in range(1,len(all_table)):
|
|
src_table = all_table[i]
|
|
print src_table.name
|
|
#src_table = src_hdf5.getNode("/data", src_table_name)
|
|
try:
|
|
group = dest_hdf5.getNode("/", "data")
|
|
except:
|
|
group = dest_hdf5.createGroup("/", "data")
|
|
dest_table = dest_hdf5.createTable(group, src_table.name, FiveMinDataRecordH5File, src_table.name)
|
|
dest_row = dest_table.row
|
|
for x in src_table:
|
|
if x['lowPrice'] <= x['openPrice'] <=x['highPrice'] \
|
|
and x['lowPrice'] <= x['closePrice'] <= x['highPrice']:
|
|
dest_row['datetime'] = x['datetime']
|
|
dest_row['openPrice'] = x['openPrice']
|
|
dest_row['highPrice'] = x['highPrice']
|
|
dest_row['lowPrice'] = x['lowPrice']
|
|
dest_row['closePrice'] = x['closePrice']
|
|
dest_row['transAmount'] = x['transAmount']
|
|
dest_row['transCount'] = x['transCount']
|
|
dest_row.append()
|
|
else:
|
|
print x['datetime']
|
|
dest_table.flush()
|
|
|
|
src_hdf5.close()
|
|
dest_hdf5.close()
|
|
|
|
if __name__ == "__main__":
|
|
import time
|
|
starttime = time.time()
|
|
"""
|
|
src_file_name = "d:\\stock\\sh_day.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sh_day.h5"
|
|
src_table_name_list = ["SH000001","SH600000","SH600004","SH600005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
|
|
src_file_name = "d:\\stock\\sz_day.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sz_day.h5"
|
|
src_table_name_list = ["SZ000001","SZ000002","SZ000004","SZ000005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
|
|
src_file_name = "d:\\stock\\sh_5min.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sh_5min.h5"
|
|
src_table_name_list = ["SH000001","SH600000","SH600004","SH600005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
|
|
src_file_name = "d:\\stock\\sz_5min.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sz_5min.h5"
|
|
src_table_name_list = ["SZ000001","SZ000002","SZ000004","SZ000005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
|
|
src_file_name = "d:\\stock\\sh_1min.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sh_1min.h5"
|
|
src_table_name_list = ["SH000001","SH600000","SH600004","SH600005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
|
|
src_file_name = "d:\\stock\\sz_1min.h5"
|
|
dest_file_name = "d:\\workspace\\hikyuu\\test\\data\\sz_1min.h5"
|
|
src_table_name_list = ["SZ000001","SZ000002","SZ000004","SZ000005"]
|
|
fenge2(src_file_name, dest_file_name, src_table_name_list)
|
|
"""
|
|
|
|
src_file_name = "d:\\stock\\sh_1min.h5"
|
|
dest_path = "d:\\stock\\sh\\1min"
|
|
fenge3(src_file_name, dest_path)
|
|
|
|
src_file_name = "d:\\stock\\sz_5min.h5"
|
|
dest_path = "d:\\stock\\sz\\5min"
|
|
fenge3(src_file_name, dest_path)
|
|
|
|
src_file_name = "d:\\stock\\sz_1min.h5"
|
|
dest_path = "d:\\stock\\sz\\1min"
|
|
fenge3(src_file_name, dest_path)
|
|
|
|
endtime = time.time()
|
|
print "%.2fs" % (endtime-starttime)
|
|
print "%.2fm" % ((endtime-starttime)/60)
|
|
|