行情函数

公式离不开「数据」——行情的价量、历史的引用、序列的统计。本章把金字塔 PEL 里最常用的数据类函数归成几组,写公式时按需取用。

一、行情数据(开高低收量)

最基础的原料,每根 K 线一组值:

函数含义
CLOSE / C收盘价
OPEN / O开盘价
HIGH / H最高价
LOW / L最低价
VOL / V成交量
AMOUNT成交额
OPENINT持仓量(期货)
实体: CLOSE - OPEN;           { K 线实体大小 }
振幅: (HIGH - LOW) / REF(CLOSE,1) * 100;   { 当根振幅 % }

金字塔还有一组原始未复权数据OCLOSE/OOPEN/OHIGH/OLOW/OVOL),以及大盘指数函数(INDEXC/INDEXV 等),需要时可直接调用。

二、动态行情 DYNAINFO

DYNAINFO(N) 返回最新实时行情(不是历史序列,永远取最新值),常用于盘中即时判断:

最新价 := DYNAINFO(7);       { 7 = 最新成交价 }
今开  := DYNAINFO(4);        { 4 = 今日开盘价 }
涨停  := DYNAINFO(54);       { 54 = 涨停价 }
均量  := DYNAINFO(38);       { 38 = 5 日均量 }

查其他品种用 DYNAINFO2(N, 'SH600000')。因为 DYNAINFO 没有历史值,回测里只会取到最后时刻的快照,做盘中即时信号时才用。

三、历史引用 REF

REF(X, N) 取 X 在 N 根之前的值——访问历史最常用的函数。

昨收: REF(CLOSE, 1);
涨跌: (CLOSE - REF(CLOSE,1)) / REF(CLOSE,1) * 100;   { 涨跌幅 % }

此外 REFX(X, N)未来 N 根的值(含未来函数风险,慎用),VALUEWHEN(条件, 数据) 取上次条件成立时的数据值。

四、序列统计(最值 / 求和 / 计数)

函数含义
HHV(X, N)过去 N 根 X 的最高值
LLV(X, N)过去 N 根 X 的最低值
SUM(X, N)过去 N 根 X 的累加和
COUNT(条件, N)过去 N 根条件成立的次数
HHVBARS(X, N)距 N 根内最高值过了几根
SUMBARS(X, A)X 累加到 A 需要几根

经典用法——N 日新高

新高: HIGH >= HHV(HIGH, 20);   { 创 20 日新高 }
连阳: EVERY(CLOSE > OPEN, 3);  { 连续 3 根阳线 }

五、条件判断与距令函数

函数含义
CROSS(A, B)A 上穿 B(金叉)
EVERY(条件, N)过去 N 根条件是否全成立
EXIST(条件, N)过去 N 根条件是否至少成立一次
BARSLAST(条件)距上次条件成立过了几根
FILTER(条件, N)条件成立后 N 根内不再重复触发
LONGCROSS(A, B, N)A 维持在 B 下方 N 根后上穿
金叉距令: BARSLAST(CROSS(MA(C,5), MA(C,20)));   { 距上次金叉的根数 }
信号过滤: FILTER(CROSS(MA(C,5),MA(C,20)), 10);   { 金叉后 10 根内不重复 }

六、跨周期与跨品种引用

金字塔支持引用其他周期其他品种的数据,这是它的一大强项:

{ 跨周期:在日线下引用周线的收盘价 }
周收: CALLSTOCK('', VTCLOSE, CYC_WEEK, 0);

{ 跨品种:引用上证指数日收盘 }
大盘收: CALLSTOCK('SH000001', VTCLOSE, CYC_DAY, 0);

{ 用引用运算符写法(等价) }
周收: "SZ000001$CLOSE";          { 引用 000001 收盘 }

CALLSTOCK(代码, 数据类型, 周期, 偏移) 是最通用的跨数据引用函数,数据类型用 VTCLOSE/VTOPEN/VTHIGH/VTLOW/VTVOL 等常量,周期用 CYC_DAY/CYC_WEEK/CYC_MIN5 等。

跨周期是把大周期信号拿到小周期用,常用于多周期共振判断。注意它可能引入「未来」信息,回测要谨慎。

小结

记住这几组:开高低收量取价、DYNAINFO 取实时、REF 取历史、HHV/LLV/SUM/COUNT 做统计、CROSS/EVERY/EXIST/BARSLAST 数条件、CALLSTOCK 跨周期跨品种。它们是几乎所有 PEL 公式的积木。下一步看 交易控制函数,把数据变成下单动作。