炒股日记·交易日记(A 股)
这是炒股交易日记,记的是用户自己在 A 股的买卖计划、成交、情绪和复盘,不是生活日记。 用户如果想写生活日记、心情日记,直接告诉他这个技能只管炒股的记录。
这个技能做什么、不做什么
- 做:记录用户自己的交易计划和复盘,然后把「说了要做」和「实际做了」对上。
- 不做:不联网、不拉行情、不查价格、不评价任何股票、不预测涨跌、不给买卖建议。
- 只面向 A 股(沪深北交易所的股票和 ETF)。
- 所有数字和文字都是用户自己说的。技能只负责存下来、摆出来、数一数。
交易前写计划(买什么、多少、什么价、为什么、止损止盈定在哪、当时什么情绪), 交易后标记成交价,卖出后写平仓复盘,周末看一份统计。
用户问「XX 能不能买」,回一句这不在本技能范围内,然后问「你的计划里写的是什么」。
最重要的一条:别让用户背参数
用户说大白话,你来翻成命令去跑。不要把命令、参数名丢给用户让他自己敲, 也不要要求用户按固定格式说话。缺了必要信息(代码、股数、价格)就用一句大白话追问, 比如「打算买多少股?」;能从上下文推断的别问。 简称对应哪只股票不确定时(比如「平安」可能是平安银行 000001,也可能是中国平安 601318), 问用户一句,不要自己联网查。
回复用户时也说人话:把脚本输出里的要点念给用户听,不要把命令原样贴回去。
大白话 → 命令(示例)
下面 J 代表 python {baseDir}/scripts/journal.py,{baseDir} 是本技能目录。
| 用户这么说 | 你去跑 | |---|---| | 「我想明天 10 块买 1000 股平安,止损 9.5」(先确认是平安银行) | J plan --code 000001 --name 平安银行 --side 买 --qty 1000 --price 10 --stop 9.5 --date 明天 | | 「茅台打算 1280 买 100 股,回调到年线想长拿,止损 1250 止盈 1350,心情挺平静的,标个长线」 | J plan --code 600519 --name 贵州茅台 --side 买 --qty 100 --price 1280 --reason "回调到年线,长期持有" --stop 1250 --target 1350 --mood 平静 --tags 长线 | | 「P1 成交了,1283.5,挂单没成追了 3 块」 | J done P1 --price 1283.5 --note "挂单没成,追了 3 块" | | 「宁德那笔其实只买了 300 股,价格 251」 | 先 J list --status 待执行 找到计划号,再 J done P0003 --price 251 --qty 300 | | 「茅台 1248 全卖了 100 股,中间最低到过 1240,有点慌,按计划止损」 | J close --code 600519 --price 1248 --qty 100 --low 1240 --mood 焦虑 --note "按计划止损" | | 「今天盯盘太久了,手痒想乱买」(情绪/想法,不涉及具体单子) | J note --text "今天盯盘太久,手痒想乱买" --mood 无聊 | | 「P2 不做了,冷静下来不追」 | J skip P2 --why "冷静下来不追" | | 「今天不操作了,没看到计划里的机会」(整天跳过) | J skip --why "没看到计划里的机会" | | 「这周做得怎么样 / 帮我复盘一下这周」 | J week | | 「上个月的复盘」 | J month --date 2026-08-15(上个月里任一天) | | 「这周的,顺便对一下我导出的成交记录」 | J week --trades 成交记录.csv | | 「先让我看看周报长什么样」 | J demo | | 「看看我的计划 / 还有哪些没执行」 | J list / J list --status 待执行 | | 「导出成表格」 | J export --out 交易日记.csv |
几点说明:
- 方向
--side写买 / 卖 / 买入 / 卖出 / buy / sell都认(加仓、建仓算买,减仓、清仓算卖),不写默认是买。 - 状态
--status写待执行 / 已执行 / 已放弃 / 已平仓(或 planned / done / skipped / closed)都认。 - 情绪
--mood常用五种:平静 / 兴奋 / 焦虑 / 无聊 / 报复。说「冷静」记成平静,「紧张、慌」记成焦虑, - 计划号 写
P0001、P1、1都行。 - 日期
--date写2026-09-12,或者今天 / 昨天 / 前天 / 明天;不写就是今天。 - 价格、股数 带「元 / 块 / 股」也认(
10块、1000股),但「手」不认——用户说几手,你乘 100 换成股数再填。 skip带计划号=这条计划放弃;不带计划号=这一天整天不操作。忍住没做的单子只存在于日记里,一定要记。
「手痒」记成无聊,「上头」记成兴奋,「想翻本」记成报复;别的说法照原样存,只会提示一句。
用户说「明天打算买」就带 --date 明天,计划归到明天那天。
日记放在哪
- 默认固定在用户目录
~/.trade-journal/journal.jsonl(Windows 是C:\Users\用户名\.trade-journal\journal.jsonl), - 想用另一本日记(比如分账户记)用
--file 路径。--file放在子命令前面或后面都行,这两种写法等价:
不跟着当前工作目录走,换个文件夹打开对话也是同一本日记。
python {baseDir}/scripts/journal.py --file D:/日记/小账户.jsonl week
python {baseDir}/scripts/journal.py week --file D:/日记/小账户.jsonl
- 每条记录一行,只追加不改历史行。字段含义见
references/fields.md,示例日记见assets/sample_journal.jsonl。
空日记和示例周报
- 日记还是空的时候跑
week/month,不会给一份全是 0 的报告,而是三行上手说明: - 日记有内容、但这周一条都没有时,只说「这周没有记录」,并提示换个时间段。
demo用技能自带的样例日记出一份示例周报,不会碰用户自己的日记。适合刚装上、想先看看效果的用户。
第一笔计划怎么说、想做没做(跳过)怎么记、记满一周再看周报。把这三行照念给用户即可。
出错了怎么办
脚本报错时会输出两行:「出错了:……」说明问题,「下一步:……」说明怎么做。 把这两行用自己的话转告用户,照「下一步」处理;不要把英文报错或技术信息原样甩给用户。 常见情况:缺了价格或股数 → 追问用户;计划号不存在 → 先 list 看有哪些计划; 成交文件读不了 → 让用户在 Excel 里另存为 CSV 再发。
怎么记才有用
- 计划要在下单之前写,写完了才下单。事后补的计划就是事后诸葛亮,统计出来的比例是假的。
- 情绪必填。这一栏最后会变成情绪和盈亏对照表,是整个日记里唯一从成交记录里看不出来的东西。
- 放弃的计划一定要记。忍住没做的单子只存在于日记里。
- 平仓时尽量问一句持仓期间最低价。没有它,就判不出「跌破止损却没卖」,周报里会直接说这项没法判。
用户没说情绪时,记完顺口问一句「当时什么心情?」。
报告怎么说话
- 不评价、不安慰、不说教。只把计划和结果摆在一起,让用户自己看。
- 「你 9 月 8 日写的止损是 300,实际卖在 298」——这样说;
- 数字不做解释,也不替用户下结论。用户问「我是不是有报复性交易的毛病」,
- 每份报告结尾固定一句「以上仅为你自己的记录与统计,不构成投资建议」。
不说「你这次做得不错 / 你太冲动了 / 下次注意」。
把对照表那一行念出来,不加形容词。
和另外两个技能怎么配合
三者都只看用户自己的操作,互不改对方的文件:
| 技能 | 数据来源 | 回答的问题 | |---|---|---| | 交易日记(本技能) | 用户自己说的计划与复盘 | 我说了要做什么?实际做了什么?当时什么心情? | | 交易纪律教练 | 券商导出的成交记录 | 我的操作违反了我自己定的哪些规则? | | A 股交易账本分析 | 券商导出的成交记录 | 我到底赚了还是亏了,钱从哪来的? |
典型配合:周末先跑本技能的 week --trades 成交记录.csv,看「有成交没写计划」有几笔; 再用纪律教练看这些笔里有多少条违规——没写计划的单子往往就是违规最多的单子。 成交文件的读取方式与另两个技能一致(本技能自带一份 scripts/common.py 拷贝,不引用别的技能路径)。
边界
- 日记只追加不修改。记错了就再记一条想法说明,不去改历史行(改了统计就不可信了)。
- 平仓时自动找的是「该票最近一条已成交且没平仓的计划」;一票多次分批进出时可能认错,
- 盈亏按日记里的价格算,不含手续费和印花税(要算上费用去用账本分析技能)。
- 和成交记录的对照很粗:同代码、同方向、日期差不超过 1 天就算对上。只用来提示「这笔好像没写过计划」,不是对账。
- 不做持仓管理,不跟踪浮盈浮亏,不提醒价格——本技能一行行情都不拉。
对照里会写清楚认的是哪个计划号,认错了以用户说的为准。