实盘量化QMT踩坑记录(二)


最近有时间把一些聚宽上面的策略重现成QMT代码。主要是增加了一些择时(如RSRS择时),还有一些因子选择方面的内容。总结起来,基本上熟悉以下几个函数就差不多了。

  1. get_trade_detail_data(),主要用该函数获得账户信息(如可用资金)和持仓信息。这里有别于聚宽代码,聚宽是通过访问context全局变量里面的portfolio对象获得相关信息。

  2. get_market_data_ex(),获得股票对应的价格信息,对应于聚宽里面的get_price(),history() 和attribute_history()函数。

  3. get_financial_data(), 获得财务信息,因子信息。在聚宽里面,通过构建query和get_fundmentals()实现,也可以使用get_factor_values()。

  4. get_instrumentdetail(),主要用来获取股票相关信息,如最高价,最低价等一些列信息,用于过滤股票。在聚宽里面有get_current_data()。

  5. passorder(),用于下单,聚宽里面有order_target_value()。

基本上QMT掌握上述几个核心方法,就可以写出大部分策略了。但是需要详细看QMT的文档,如何使用这些函数。在实盘量化QMT踩坑记录(一),我已经提到过一些注意事项。这里再补充几点:

(1)在用QMT的回测功能时候,使用get_market_data_ex(),一定要注明end_time,不然每次都会返回最新的值(默认end_time 是今天),QMT并不会在运行回测的时候动态地修改end_time,这一点来说没有聚宽方便。

(2)在使用get_financial_data()获取财务信息时,包括PERSHAREINDEX 表格在内的,里面的很多字段,如inc_revenue, du_profit 返回的值都是0。我注意到这个不是少数,而是很大一部分字段都是0。这个不得不让我怀疑QMT的数据质量。

如果有其他问题,欢迎联系我