干这行久了都懂一句话:EA跑得稳不稳,一半看逻辑,一半看注释。我以前也觉得注释是给菜鸟看的,直到有次改一个半年没碰的镑美剥头皮策略,打开源码那一刻整个人是懵的——变量叫a1、a2、tmp,止损逻辑藏在三层if嵌套里,改了半小时差点把原本能跑的逻辑改崩。从那以后我老老实实把注释和文档当纪律来执行。
先说我踩过的坑。第一个坑是只写“做什么”不写“为什么”。比如一行代码写着“if(Spread>20) return;”,注释写“点差过滤”,等于没写。后来我改成“点差超过20点(5位平台)跳过开仓,避免欧美亚盘交接流动性差时滑点吃掉利润”,过几个月一看就明白。第二个坑是参数不留版本记录。有次把黄金的ATR周期从14改成10,回测曲线好看了,实盘却因为波动放大连续止损,查了半天才发现是参数被改过没留痕。现在我的习惯是每个可调参数后面跟一行注释,标明默认值、调整范围、上次调整日期和原因。
具体做法我整理成几条,照着做能省很多事:
还有个小习惯分享下,我每周五收盘后会花十分钟把当周改动过的策略注释过一遍,顺手在文档里记一笔“本周调整:欧美止损从15点放宽到18点,原因是周四周五点差扩大”。别小看这十分钟,实盘出问题时翻记录比翻聊天记录快得多。
你们平时写EA是边写边注释,还是跑通了再补?有没有因为注释缺失踩过大坑的,评论区聊聊。
先说我踩过的坑。第一个坑是只写“做什么”不写“为什么”。比如一行代码写着“if(Spread>20) return;”,注释写“点差过滤”,等于没写。后来我改成“点差超过20点(5位平台)跳过开仓,避免欧美亚盘交接流动性差时滑点吃掉利润”,过几个月一看就明白。第二个坑是参数不留版本记录。有次把黄金的ATR周期从14改成10,回测曲线好看了,实盘却因为波动放大连续止损,查了半天才发现是参数被改过没留痕。现在我的习惯是每个可调参数后面跟一行注释,标明默认值、调整范围、上次调整日期和原因。
具体做法我整理成几条,照着做能省很多事:
- 文件头写清策略逻辑:品种、周期、入场条件、出场条件、风控规则,三五行说清楚,别嫌啰嗦
- 关键函数上方写输入输出:参数含义、返回值范围、异常情况怎么处理
- 魔法数和订单注释统一规范:比如“GP_M5_001”代表镑美5分钟第一套策略,复盘时MT5历史记录里一眼能筛出来
- 参数区单独成块:所有可调参数集中在文件顶部,用注释分段,别散落在代码各处
- 改逻辑必改注释:这条是纪律,改完代码不更新注释,等于给自己埋雷
还有个小习惯分享下,我每周五收盘后会花十分钟把当周改动过的策略注释过一遍,顺手在文档里记一笔“本周调整:欧美止损从15点放宽到18点,原因是周四周五点差扩大”。别小看这十分钟,实盘出问题时翻记录比翻聊天记录快得多。
你们平时写EA是边写边注释,还是跑通了再补?有没有因为注释缺失踩过大坑的,评论区聊聊。
