0. 前言

过去7年的证券交易经验,在一些交易行为上有了很大的提升,但是人的情绪却始终是无法控制的。
要真正做到”Make emotion work for you instead of against you.”,靠Kino的意志力基本不现实,所以2024最重要的一件事,还是将交易系统做出来,不能抱着完美主义的想法,而是从0到1,做一个不care编码质量的交易系统,能work就行。(这大概也是这几年社畜的收获之一:能忍受烂工程了)

在主观的交易行为上,要始终牢记“市场永远不缺赚钱的机会”(当然啦,市场也永远不缺亏钱的机会),其实这句话反应到具体的交易行为上基本等价于“做好仓位管理”+“谨慎进场,快速离场”。但区别在于,后者是指导行为的话语,而行为还是强烈被个人情绪左右,前者是控制情绪的话语,控制了情绪就控制了一切行为。

这样一回顾,自己运气其实还真不错,2021之前资金量很少,盈亏没有感觉,2022年是永远满仓永远热泪盈眶,没被爆头…2023真正开始严控风险,躲过了很多股票的腰斩甚至膝盖斩的单边下跌,而这些之前可能都是半仓甚至满仓。

(Fight!

1. 市场调研

首先需要结合自身经验与准入门槛,做好市场调研。

  • 自身经验: 需要选择自身较为熟悉的市场, 对该市场的交易工具、交易规范、交易风险等有充分了解,最好是在此之前已经有交易经验的市场。
  • 准入门槛: 不同市场的准入资格各不相同, 比如美股的量化交易已经非常成熟,在已有交易经验的基础上, 准入门槛几乎为0, 而A股就是另一番景象了。

首先Kino从自身经验出发, 将范围框定在美股、港股、A股三个市场, 下面分别调研三个证券交易市场的准入门槛。

1.1 美国证券市场

针对美国证券市场, 只要有基础交易资格, 那么大陆客户常用的券商app(富途、老虎、盈透等)基本都有对应的交易API。
针对美股量化交易资格, 就简化成了如何获得美股基础交易资格?
对于中国大陆客户来说, 核心需要解决的问题有两个:

  • 合法券商开户
  • 资金出入境

券商开户原本是个比较简单的事, 早期只要下载富途、老虎app, 按照引导填写信息即可, 但由于监管原因, 此类跨境券商被打上了不合规的标签, 因此此类券商均逐步关闭了境内开户通道。
以Kino用的富途为例, 2022年12月31日起停止为中国境内投资者提供开户服务, 2023年5月19日起暂停为中国境内用户提供服务。这就增加了美股的开户和交易门槛,至于当下环境怎么能够进行美股开户,需要自寻出路了,Kino也并无研究。

资金出入境的难度一直以来倒是没什么大变化, 核心是要开出来香港卡, 民生、汇丰、招行的客户经理问一问, 总有一款满足你的要求.

拥有了可以进行美股交易的券商账户, 且可以方便的进行资金出入后, 就可以正常进行美股交易了。

要想进一步做量化交易, 并没有额外门槛, 只是需要一些额外的软件环境而已, 仍以富途为例, 参考官方的API文档, 逐步开始就行。

富途所需的软件下载链接如下:

OpenD-Windows: https://www.futunn.com/download/fetch-lasted-link?name=opend-windows
OpenD-macOS: https://www.futunn.com/download/fetch-lasted-link?name=opend-macos
OpenD-Ubuntu: https://www.futunn.com/download/fetch-lasted-link?name=opend-ubuntu
OpenD-CentOS: https://www.futunn.com/download/fetch-lasted-link?name=opend-centos

1.2 香港证券市场

对于Kino来说, 香港证券市场, 和美国交易市场几乎完全相同, 都是富途开户, 利用富途API即可。

但对于其他人来说, 现在直接香港开户不太方便, 没有其他路径的情况下, 可能需要考虑走港股通的路径, 这种路径下, 对个人量化投资者可能就没有那么友好了。

1.3 内地证券市场

内地证券市场, 由于发展时间相对来说还是较短, 且独特体制下对于证券交易的监管, 也别有一番思路, 因此A股的量化交易, 实际上是有点门槛的, 对个人投资者尤甚。至少目前没有任何一家券商直接有官方文档, 简明扼要地提供交易API, 让人可以快速接入。

针对A股个人量化交易, 目前有几种方案:

  • easytrader: 本质上是模拟按键… 既然官方不提供API, 但是各券商总是会提供交易软件的. 基于这个思路, 就有人开发了easytrader, 计算机上安装券商软件后, 在easytrader里编写策略, 真正交易时easytrader模拟调用券商软件的按键功能, 完成交易。
  • API破解: 从技术视角来看, 只要是网络通信, 用wireshark抓包, 分析接口数据和格式, 理论上总是能破解券商的交易API的, 然后自己编写策略直接调用。
  • Ptrade/QMT: 这两个软件是由第三方的企业开发,券商采购接入其交易系统,提供给满足条件的个人投资者使用。Ptrade是由恒生电子开发,而QMT则由迅投开发,二者均支持python语言。Ptrade和QMT还是有很大的区别,其中一个是Ptrade是运行在券商服务器,个人用户只是在软件上面编写程序,最后程序是加密上传到券商服务器,然后在券商服务器进行运算,获取行情,下单。而QMT则是在本地电脑上运行,QMT从券商服务器或者迅投服务器拉取行情到本地,然后你的程序进行分析,下单,把下单指令再发到券商服务器。

考虑到easytrader、API破解 不稳定、不合法,建议不要使用这些方式。
对ptrade和qmt进行调研后, 发现目前部分券商对这些资格的申请门槛较低, 网上找个对应券商的理财顾问, 按照要求开户即可。

1.4 调研小结

对Kino而言, 美股/港股/A股 各有优劣。
美股/港股 量化交易准入门槛较低, 直接利用富途API就可以正常交易了, 但是美股/港股 交易水平有限, 一直在亏损, 从未盈利, 且富途的交易合规性, 仍有变数。
A股 交易水平 尚可, 至少还是盈利水平, 但是交易准入门槛较高, 且特殊体制下针对量化的监管也存在不确定性, 很可能某天一纸令下就不能量化交易了。

因此还是尽量这三个市场都支持, 减少风险。美股/港股 使用富途的API,A股使用国金的QMT。

2. 实施路径

2.1 资格申请

富途是有存量账号的, 按照富途官方API文档开发即可。
A股QMT的资格, Kino找了国金的人, 按照流程申请了QMT资格, 收到邮件, 下载应用, 开始着手开发!

2.2 技术选型

技术选型上, 考虑到目前的开发经验和服务方限制, 使用Java+SpringBoot做工程化实践框架, 使用Python+FastAPI对接 QMT 的接口能力, 也就是用FastAPI将QMT包装一层, 通过接口暴露。数据存储使用PostgreSQL。

QMT只提供了Python包确实是一件很痛苦的事, 但是作为卑微的使用方, 只能有啥用啥, 先兼容着…

2.3 架构设计

从技术视角来看, 只要理解了证券交易的业务, 架构设计上基本都是大同小异。为了便于实现, 目前尽量简化, 至于更细节的地方, 未来有时间再说吧。
大体上如下图, 初始阶段核心需要做的是行情和交易:

架构设计图

对于初学者, 稍微需要花点时间理解的地方, 是API网关层和SDK包.
只要能够理解miniQMT其实完全相当于富途的openD, 迅投的python包, 实际上就是富途的SDK, 在项目中就可以对不同平台进行抽象建模。

2.4 项目命名

命名是研发遇到的第一件最痛苦的事…
好在这个项目已经想了5年之久了, 命名是早就想好的, 就叫plutus, 而plutus的含义, 其实很直白: 普路托斯, 古希腊神话中的财富之神。

3. 总结

从0到1很简单: 申请资格 -> 搭建环境 -> 认真阅读接口文档 -> 开发测试
但是工作的经验告诉Kino, 难的从来都不是从0到1, 从0到1说出去很好听, 但当你真的要为自己的资金负责时, 到1是远远不够的…

PS: 如果有感兴趣的, 可以私聊, 代码仓库可以共享, 正好还可以共同开发. 毕竟代码是负债, 数据是资产, 做好各自的账号数据隔离就行.

Footnote

[1] Anonymous. “迅投知识库.” ThinkTrader, January 1, 2018. https://dict.thinktrader.net/.
[2] Anonymous. “富途API” Futu, April 4, 2024. https://openapi.futunn.com/futu-api-doc/
[3] Anonymous. “FastAPI” tiangolo, April 5, 2024. https://fastapi.tiangolo.com/zh/tutorial/