从去年开始,我就逐步在构建自己的交易系统。后来借助 bolt 的支持,我完善了交易系统的前端部分。目前,基本功能已经具备。希望通过这篇文章分享开发流程和交易系统的一些功能,给大家带来启发。不过,本文内容不构成任何投资建议!
本文内容承接 InfluxDB 的使用与一些 A 股持仓分享。当时,我的交易系统已经有了后台任务,定时将部分数据同步到 InfluxDB 并展示出来。
去年 11 月,我发现了 bolt.new,可以使用 AI 快速生成前端代码。我借此机会为交易系统添加了前端页面,对页面效果非常满意。因此,我写下这篇博客,分享我的半自动化股票交易系统。为什么说是半自动化呢?因为我已经设置好了买入卖出的价格和数量,仅使用这个系统执行交易并发送提醒。
系统界面
作为游客,你可以直接访问这里:
其中落地页和持仓页面是公开可见的。
落地页
这里的图表展示的是上证指数。我问 bolt 有没有更炫酷的落地页,它就生成了这个动态绘图。
持仓页面
这里的图表记录了我的仓位分布和操作情况。操作记录中仅显示成功的交易,并支持查看很久以前的交易。
我的交易计划
Trade Plan
标签页记录了我手动创建的一些条件单。
上半部分:股票走势
上半部分展示了选定股票的走势情况:
下半部分:预期计划
下半部分是我的预期计划:
这些条件单比同花顺或腾讯自选股的条件单更加个性化。我并不纠结程序是否会因故障而错过交易,因为股市从来不缺机会,不是吗?
一些交易策略
在上述系统页面中,我记录了一种确定价格和仓位的自动交易策略。此外,这个系统还支持几种其他策略,以下是具体分享。
1. 确定价格和仓位的自动交易
我的仓位图中大约有 20 多只股票。如果每天都要逐一查看这些股票,想想都觉得麻烦。通过程序的自动化,我节省了大量看盘时间。
我只需创建股票的交易预期,程序会自动监听并执行操作。例如,对于中远海控,我已经设置好了买卖点对应的价格和数量。
2. 动态止盈的自动交易
对于已经盈利的股票,我会设置一些止盈点来决定何时卖出。
以 2500 元为界限,当某只股票的阶段性收益超过 2500 元时,我会考虑卖出接近 2500 元的部分仓位。下一次卖出的点则会递增,比如 2500 × 1.1 = 2750 元。
我的数据库记录大致如下:
3. 成功买卖后自动创建未来交易
有些交易策略是以买入和卖出形成闭环的操作逻辑。我实现了一个功能:当每日交易成功后,程序会自动创建未来的交易记录。
例如,当我以 1.532 的价格卖出 5000 股某股票时,程序会自动生成一条未来买入记录,价格为卖出价的 0.9 倍(即 1.3788)。同样,买入成功后也会生成未来的卖出记录。
一些模型和回测的分享
我认为股票交易在长期来看是一个概率问题,因此会通过模型和回测来量化收益和风险。以下是一些分享:
盈利与亏损模型
这个文档并不是告诉你能赚多少钱或亏多少钱,而是帮助你量化预期收益或损失。
使用 Backtrader 进行回测
这个回测策略是基于某只股票当天价格相较于前一天最高点的跌幅进行买入,再逐步卖出的收益率分析。它可以回测过去几年的数据,标记买卖点并分析最终结果,非常实用。
如果你是 Backtrader 的新手,可以参考这个 Notebook,它详细介绍了如何使用 Backtrader 以及展示回测结果。
bolt 的一些使用技巧
1. 页面分离与项目结构化
在使用 bolt 时,我会要求它将不同的页面或组件进行分离。这不仅方便后续修改,也让项目逻辑更加清晰。
2. Mock 数据与生产数据分离
bolt 的后端功能无法完全满足我的需求,因此我要求它规范化接口并提供 Mock 数据功能。以下是实现示例:
在开发阶段,页面使用 Mock 数据;而在生产部署时,切换为我自己的接口。这种分离极大提升了开发效率。
3. 客户端集成的痛点
目前,bolt 生成的前端代码需要手动下载并导入到本地项目中。虽然前后端分离已经实现,但这个过程仍然不够高效。希望未来 bolt 能支持远程同步代码到本地的功能。
项目部署与自动化
作为我的老本行,CI/CD 流程是我非常熟悉的领域。未来有机会,我会专门写一篇文章分享我的自用 CI/CD 流程。
整理和总结
虽然我的账户一直是盈利的,但我并不在意这个交易系统能赚多少钱或亏多少钱。对我来说,这个系统的意义在于让交易更加结构化和可追溯化。
大多数时候,我们追求的不是赚钱,而是创建一个系统来解决问题。当你解决了足够多的问题,自然会获得一些收益。
我并不认为自己是投资者,而是一个拥有自动化工具的交易员。