Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def read_hst(filename):
- from pandas import DataFrame, to_datetime
- from struct import unpack, calcsize, iter_unpack
- bint = open(filename, 'rb').read()
- head = unpack('<i64s12siiii', bint[:96])
- version = head[0]
- symbol = head[2].decode("utf-8").split('\x00')[0]
- start = 148
- if version == 401:
- fmt = '<qddddqfq'
- columns = ['datetime', 'open', 'high', 'low',
- 'close', 'volume', 'spread', 'real_volume']
- elif version == 400:
- fmt = '<iddddd'
- columns = ['datetime', 'open', 'high', 'low', 'close', 'volume']
- else:
- print('El archivo no es una versión conocida de hst de MetaTrader')
- return
- size = calcsize(fmt)
- df = DataFrame.from_records([bar for bar in iter_unpack(fmt, bint[start:])],
- columns=columns,
- index='datetime')
- df.name = symbol
- df.index = to_datetime(df.index, unit='s')
- return df
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement