价格模拟

From FxCodeBaseWiki
(Redirected from Price Simulation/zh)
Jump to: navigation, search

什么是价格模拟器?

为何不能使用实时价格?

初看起来,直接对实时市场尝试执行策略或指标没有任何问题,而且,对策略和指标的最终测试始终必须对实时市场进行。

但是,在调试或回溯测试期间,您可能希望对相同的市场模式多次运行策略,以便调整逻辑(在调试期间)或参数(在回溯测试期间)。由于实时市场是不断变化的,所以每次运行指标或策略时,实时市场将显示出新的模式。相反,价格模拟可让您根据需要将指标/策略应用于相同的市场模式,没有次数限制。

实时市场快而流畅,但还不够快。如果要在全年范围内测试数据,您必须先等待全年过去,然后才能获取测试结果。

价格模拟解决了这些问题。您可以根据需要“重现”任何市场历史数据,没有次数限制,而且每一轮都比原始市场快得多。

工作原理

价格模拟器获取货币历史数据(例如,以价格数据文件的形式保存的记录),然后根据历史数据的每根棒线模拟八个分笔成交点 (tick)。分笔成交点的分布取决于棒线的类型。对于下跌棒线,曲线会先达到高价位,然后达到低价位,最后再达到收盘价。对于上升棒线,曲线会先达到低价位,然后达到高价位,最后再达到收盘价。

Pricesim curvesZH.png

如果使用一分钟数据,价格模拟器提供的分笔成交点数目为:每天 12960 个分笔成交点,每年最多 340 万个分笔成交点(52 周 x 5 个交易日)。

为何不能使用历史分笔成交数据?

理论上这是可行的,但实际上,每种商品在常规的一小时交易中最多有 20,000 个分笔成交点,因此每年有 124,800,000 个分笔成交点。这就带来了一系列问题:

  • 即使选择最精简的格式,每种商品的年历史数据也将达到 1.5Gb 大小。
  • 模拟时间将延长 41 倍。对全年范围测试典型策略大约需要 30 分钟,这就使优化之类的任务几乎毫无用处。
  • 如果观察一下 1 分钟范围内的实际价格变动,您将看到在大多数情况下,市场都会遵循以上模式:
Pricesim realZH.png

如您所见,大多数波动只有十分之一点 (pip) 大小,并符合差价大小。您无法根据开盘价使用设为 1 个点的止损或限价,或跟踪精度为 1/10 点的净值/余额。此外,大部分客户端并不接收所有的分笔成交点。在最糟糕的情况下,当互联网连线情况非常差时,客户端可能每分钟只获取四个分笔成交点:开盘价、最高价、最低价和收盘价。

我们测试了许多策略,并将 1 分钟分笔成交点的模拟结果与对历史分笔成交数据执行策略的结果进行了比较。策略测试的结果差异甚微,即使将策略应用于 1 分钟时间框架,该差异也绝对可以忽略不计。

我只能看到在一种情况下,伪随机分笔成交变动优于模拟的曲线。自学预测算法(例如神经网络算法)可能足够聪明,能识别出这些曲线,并能在前三个分笔成交点模拟出来之后“预测”方向。但我要重申,这是极少发生的情况。此外,市场模拟是开放式 API,因此,对于这种棘手的情况,您可以轻松实现自定义的模拟/回溯测试例程。

本文的其他语言版本

Language: English  • español • français • русский • 中文 • 中文(繁體)‎