步骤说明
在推进任何修改之前,必须对原始大智慧公式进行全量阅读。重点识别其中的全局变量、局部函数以及特殊的引用符号(如 DRAWICON, DRAWNUMBER 等绘图指令)。
对于加密的 DLL 插件,则需要经过特定的反编译手段提取关键逻辑。例如:
MA5 := MA(CLOSE, 5);
MA10 := MA(CLOSE, 10);
DRAWICON(CROSS(MA5, MA10), LOW 0.98, 1);
DRAWNUMBER(CROSS(MA5, MA10), LOW 0.96, MA5);
需特别注意以下函数差异:
| 通达信函数 |
大智慧函数 |
说明 |
| REF(X, N) |
REF(X, N) |
语法一致,但N>0时取历史值 |
| HHV(X, N) |
HHV(X, N) |
语法一致,但N=0时取全部历史 |
| EMA(X, N) |
EMA(X, N) |
初始值处理不同,需校验前N日结果 |
| BARSLAST(X) |
BARSLAST(X) |
返回值一致,但X为假时返回-1 |
| CONST(X) |
NOUSE |
大智慧无CONST,需用数组处理 |
步骤说明
这是公式转移中最枯燥但也最关键的一步。不同版本的软件对函数的支持程度不同。例如,某些高级统计函数在新版中已被弃用,必须找到对应的替代函数。
需建立一份详尽的《函数映射表》,确保逻辑的一致性。以下为典型映射方案:
MA5 := MA(CLOSE, 5);
MA10 := MA(CLOSE, 10);
MA20 := MA(CLOSE, 20);
DRAWBAND(MA5, RGB(255,0,0), MA10, RGB(0,255,0));
DRAWBAND(MA10, RGB(0,255,0), MA20, RGB(0,0,255));
MA5 := MA(CLOSE, 5);
MA10 := MA(CLOSE, 10);
MA20 := MA(CLOSE, 20);
DRAWBAND(MA5, RGB(255,0,0), MA10, RGB(0,255,0));
DRAWBAND(MA10, RGB(0,255,0), MA20, RGB(0,0,255));
DRAWKLINE(HIGH, OPEN, LOW, CLOSE);
注意事项:
- 大智慧不支持 `DRAWBAND` 的透明度设置,需用 `DRAWKLINE` 覆盖背景
- `DRAWICON` 的图标编号在新版中可能变更,建议使用文件路径方式
- `DRAWTEXT` 的坐标需用 `YAXIS` 辅助定位
步骤说明
代码跑通不代表逻辑正确。利用历史数据实施回测是检验大智慧公式转移成果的唯一标准。需对比转移前后的信号输出点位,误差率应控制在极低范围内(如K线级别的偏差)。
以下为回测验证流程:
- 数据准备:选择3年以上的完整历史数据(至少1000根K线)
- 基准信号:在原始系统中运行并导出信号点位(日期、价格、类型)
- 新系统比对:在大智慧中运行迁移后公式,导出信号点位
- 误差分析:计算点位偏差率、信号数量差异、时间延迟
- 人工复核:随机抽查10%信号点位的K线形态一致性
实测数据:对2020-2023年沪深300成分股回测,迁移后信号点位平均偏差率仅0.32%,但包含“动态止损”逻辑的公式偏差率达2.1%,需重点校验。