我已经下载了一个包含股票数据的
.csv
文件,在尝试使用Python读取它时,它似乎是Metastock格式,我需要做什么才能使用Python读取它?
我已经找到了this文章,其中显示了一些执行此操作的代码,但它尚未更新,我无法使其工作。任何想法将不胜感激
Metastock 数据目录包含数据文件(
.dat
和 .mwd
)和主文件。您首先需要阅读 master
、emaster
和 xmaster
来查看从符号 -> 文件名的映射列表。每个主文件都略有不同,但您所需要的只是从仪器名称到文件编号的映射。
要读取特定的
.dat
文件取决于两种格式:每日(7 列)或盘中(8 列,带有附加时间列)。
您可以通过逐行循环并使用
filehandle.read
(特定字节大小,通常为 4)来读取这些内容,然后将字节转换为日期/时间/int 或 float。
例如:
columns = ['date', 'open', 'high', 'low', 'close', 'volume', 'oi']
with open(filename, 'rb') as file_handle:
_ = struct.unpack("H", file_handle.read(2))[0]
last_rec = struct.unpack("H", file_handle.read(2))[0]
file_handle.seek((fields - 1) * 4, os.SEEK_CUR)
rows = []
for _ in range(last_rec - 1):
row = []
for column in columns:
col = MScolumns.get(column)
byte = file_handle.read(col.dataSize)
value = col.read(byte)
row.append(value)
rows.append(row)
每个列类型解析都略有不同(
col.read
函数),但相当简单。
我上传了一个小包,用于将
metastock.DAT
文件转换为 pandas 数据帧;它可以在这里找到:
https://github.com/gityoav/metastock2pd
或者,直接跑
conda install -c yoavgit metastock2pd
我需要将数据从 csv(或 txt)文件转换为 MetaStock ,所以我的请求与此页面标题正好相反。
你愿意帮助我吗?