如何使用Python读取Metastock数据

问题描述 投票:0回答:2

我已经下载了一个包含股票数据的

.csv
文件,在尝试使用Python读取它时,它似乎是Metastock格式,我需要做什么才能使用Python读取它?

我已经找到了this文章,其中显示了一些执行此操作的代码,但它尚未更新,我无法使其工作。任何想法将不胜感激

python python-3.x encoding dataset
2个回答
1
投票

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

0
投票

我需要将数据从 csv(或 txt)文件转换为 MetaStock ,所以我的请求与此页面标题正好相反。

你愿意帮助我吗?

© www.soinside.com 2019 - 2024. All rights reserved.