

最近遇到几个同学问我 关于通达信数据评测的事情, 其中一个同学宣称自己的通达信指标好NB,收益年化感觉可以买下地球。
我抽空看了下。 通达信系统有个程序员评测系统, 可以通过编写公式 进行评测,最终导出excel格式的数据。
对于一些同学来说,希望通过导出excel里的买入卖出时间,成交金额, 获取 公式策略的 回测数据,比如总资产曲线,以及 收益率曲线。
趁着周末,用AI试着写了款工具。 这里讲一讲技术思路。
这款工具流程,上传文件 → 预处理交易数据 → 获取行情数据 → 逐日计算资产 → 统计指标 → 可视化展示。
为了实现这一流程,我利用 Streamlit 的交互式组件来接收用户输入和展示结果;同时借助 Tushare 获取股票的历史前复权价格;最后用 Matplotlib 绘制资产曲线和累计收益率图。
通达信导出的 Excel 表格通常包含多个字段,如品种代码、时间、信号、成交额、手续费等。为了后续计算,我做了以下处理:
direction_map,覆盖常见表述,若出现未知值则报错。最初我让AI写了下,写完运行发现累计收益率真的蛮高的。 我把导出的excel数据按照日期排序看了下, 这个初始资金貌似不对。
这样理解,策略中前几天连续有买入操作,但都没有卖出操作。 显示的初始资金就1万块,既然前几天只有买入操作, 那么初始资金这个设置有点不合理。
后来我想了下,要不我换个思路。 我反推最小初始资金值, 保证每次操作后得到的现金流不能为负。 虽然很多时候现金空置没利用上, 但比较符合实际情况。
为了计算持仓市值,我需要每只股票在交易日当天的收盘价(前复权)。这里选择 前复权 价格,因为它能真实反映从买入到卖出期间的实际收益(考虑了分红送股)。
如果现金出现负值(即透支),且用户未勾选“允许现金为负”,程序会报错并停止,提醒数据可能不自洽。这能防止因数据错误导致回测结果虚高。
如果Excel中有“可用资金(元)”列,程序会自动将我们计算的现金余额与原始值对比,并输出差异最大的日期。这可以帮助判断数据是否隐含了外部入金。
改完初始资金的方式后,发现累计收益率下降了不少。 我是不是想错了,其实大家平时都是满仓干的。 但第一天满仓干在没卖出的情况下 第二天怎么继续满仓干呢? 再继续转入资金继续满仓干? 如果是这样,我这种回测思路是错误的。