以下是一些提示提示 1:界说怎么存储数据
咱们能够将一切买入/卖出信息作为空格分隔的值存储在单个文件中。由于咱们需求随机拜访,因而咱们将在每个天然日将这些数据别离到一个文件中。20 年来,最多可包括 7300 个文件,这肯定是任何现代操作体系能够处理的极限范围内的数字。
Tip 2:不要介意开场时刻
咱们或许应该依据买卖时段对数据进行分组。依据存储数据的经历,运用一致时区的天然日会好许多。假如咱们想剖析特定时刻(例如 9:30 之后),咱们能够在剖析中履行此操作。但数据应按天然日存储。由于这样做最简略。您可能会提出“亚洲时段能够包括前一个天然日的完毕和当时天然日的开端”或“我想处理正常和延伸的买卖时刻而且延伸的时刻跨过两个天然日”等对立定见。一切的对立定见都能够测验,但相同,即便在处理这些问题时,咱们找到的最简略的答案总是相同的:存储按一致时区、天然天数分组为最简略。
技巧3:在目录中摆放文件
UNIX 国际的一个伟大成就是目录结构。运用它是免费的而且零保护。因而能够按年和月或年和月和日将目录中的文件分组。咱们一般挑选了后者,由于咱们计划进一步布置更多具有聚合信息的文件。
假如咱们想要 2019 年 4 月 3 日的 EURUSD 数据,咱们现已知道它坐落/data/EURUSD/2019/04/03/EURUSD.2019.04.03.tape。假如你想阅览它,你只需在那个文件上做一个cat来显现它的内容。
技巧 4:将数据存储为固定巨细的字段
不要将数据存储在 CSV 中,主张运用固定巨细的字段。这两者的初始差异是不大的,但后边会有很大的功能优势的差异。第一个字段的长度是可变的(1.1373 和 1.13732),在第二种情况下,咱们能够为每个字段界说准确的长度,并在需求时用零填充(1.13730 和 1.13732)。在上面的比如中,咱们知道 EURUSD 有 5 个小数位和 1 个天然位,所以每个价格正好需求 7 个字符。这会简化在 C 和 Java 中运用初级例程的进程,也会让咱们的回测数据检索更快。这儿不要运用逗号,由于在 UNIX 中列一般用空格分隔,而且由于当列用空格分隔时手动查看文件更简略。经过运用CSV技能和读取固定巨细的字段,咱们会得到很好的运用功能,宽度字段也是如此。
技巧 5:编写一个简略的东西来检索一个天然日
咱们能够编写一个简略的、自包括的指令行东西来检索给定日期的一切数据并存储它。由于咱们现已界说了每天数据的去向,因而能够轻松完结。有一个名为curl的东西,能够帮咱们检索,咱们还需求一个小脚原本迭代恳求,由于每天可能有超越 10000 条记载。咱们能够运用 Python 或仅运用 shell 脚原本完结。咱们要注重用现有的东西来简化编程。
技巧 6:构建可重用底子指令的辅佐指令。
每天检索数据真的很耗时。所以咱们能够写一个指令来检索一整年的数据。在这种情况下,在 Python 中解析日期更简略,因而能够在 Python 中编写指令。它只是在循环中调用前一个。
这个东西最好用 Python 编写,由于处理日期更简略。它遵从构建小型东西的 UNIX 办法,该办法仅处理一个详细需求。
归纳
在此系列中,咱们扼要回忆了在存储用于回测的财务数据方面一般怎么着手,咱们还介绍了一种十分简略的检索和存储数据的办法。经过两个简略的东西履行简略的过程,咱们现已有效地将数据存储和检索了。不仅如此,咱们还介绍了一种存储数据的方法,这种方法十分易于沟通、了解和回忆,而且零保护。这种主意在任何软件项目中都十分重要。
这些文件很紧凑,很简略在天然日内寻址。咱们能够很简略地定位到任何特定的时刻,由于每个文件都有固定宽度的记载,大约80Kbytes,这很简略解析,假如咱们真的需求跳转到特定的方位,也很简略完成搜索算法。
运用剖析所需的特定聚合数据创立新文件的进一步聚合阶段加强了这一点。假如咱们把每条记载都设置为相同的长度,那么纯列固定宽度文件就能够在每种言语或东西(Octave、R、Python、C、Java、sed、awk 等)中运用了。
在自营买卖运转剖析和对历史数据的回溯测验的布景下特别如此。首要关注点可能是拜访时刻,回测和剖析一般触及对次序数据的很多核算,因而磁盘拜访时刻一般能够忽略不计。假如没有,数据总是能够放在缓存的 RAM 文件体系上,这样无需编写一行代码即可处理问题。
假如需求长途拜访数据,能够运用简略的 NFS,或许能够布置 HTTP 服务器来分发文件。只需几行装备,咱们将具有一个 REST 服务,而无需编写一行简略的代码。结论是 UNIX 有许多旨在简化和重用的东西和服务,不管该技能看起来有多老:编程并不总是答案。
假如咱们正在处理聚合的底子 OHLC 数据,则底子不存储数据并向数据提供者恳求按需数据也是一种挑选。一般情况下咱们总是期望对数据、自界说核算或聚合进行处理。如咱们正在迭代很多数据就需求下载数据并在本地拜访它。