PEL 变量与运算

PEL 公式本质是对一组「价格序列」做计算——每根 K 线都算出一个值,画出来就是指标线,接上交易函数就能下单。 本章把语法的最小零件拆开:赋值、输出、参数、运算符、数据序列。掌握这些,绝大多数公式都能读懂、改写。

赋值 := 与输出 :

最关键的一组区别:

MA5  := MA(CLOSE, 5);     { 赋值:算出来存到 MA5,不画线 }
MA20 : MA(CLOSE, 20);     { 输出:算出来,并画一条线 }
  • := 只计算、不画线,给中间变量用。
  • : 计算且画线,给最终要看到的指标线用。
  • 每条语句以 ;(英文分号)结尾。

一条公式里可以有多个 :=,也可以有多条 : 输出(画多条线)。输出线还能加修饰符,如 ,COLORRED(红色)、,LINETHICK2(线宽)。

参数(INPUT)

公式需要可调参数时,在公式头部用 INPUT 声明,使用时直接引用名字,不用改代码:

INPUT:N(20,1,1000);       { 参数 N,缺省 20,范围 1~1000 }
MAN: MA(CLOSE, N);        { N 可在使用时调 }

也可以在公式编辑器的参数表格里填写参数(名称 / 最小 / 最大 / 缺省),效果相同。参数让你的公式更通用——同一个均线公式,调参就能切换周期。

行情数据:开高低收量

行情数据是公式的原料,每根 K 线一组值:

写法含义
CLOSE / C收盘价
OPEN / O开盘价
HIGH / H最高价
LOW / L最低价
VOL / V成交量
AMOUNT成交额
OPENINT持仓量(期货)

这些都是「序列」——每根 K 线一个值。取历史值用 REF,如 REF(CLOSE, 1) 是上一根的收盘。

运算符

算术:  +  -  *  /
比较:  >  <  >=  <=  =  <>
逻辑:  AND  OR  NOT
  • 比较运算的结果是条件:成立为 1,不成立为 0。
  • <> 表示「不等于」。
  • 逻辑运算用来组合多个条件。
实体 := CLOSE - OPEN;                  { K 线实体大小 }
阳线 := CLOSE > OPEN;                  { 1 表示阳线 }
放量 := VOL > MA(VOL,5) * 1.5;         { 量大于 5 日均量 1.5 倍 }
信号: 阳线 AND 放量;                   { 两个条件同时满足 }

全局变量 VARIABLE

普通变量每根 K 线都会重新初始化,值不会带到下一根。当你需要跨 K 线累计状态(如计数器、持仓天数、历史最高价),就要用全局变量:

VARIABLE:计数:=0;            { 声明全局变量,仅在第一根初始化 }
计数 := 计数 + 1;            { 每根 K 线在上根的基础上 +1 }

声明语法:VARIABLE:变量名:=初始值;。它在第一根 K 线初始化,之后每根 K 线用上一根结束时的值,形成闭环。详见策略回测与图表中的进阶用法。

还有 GLOBALVARIABLE(超全局)和 EXTGBDATA(跨策略共享)等更高级的全局变量,后台策略和多策略联动时才用,新手阶段掌握 VARIABLE 即可。

一个综合小例子

把零件拼起来——「均线多头排列 + 放量」条件:

MA5  := MA(CLOSE, 5);
MA20 := MA(CLOSE, 20);
多头 := MA5 > MA20;                 { 短期在长期之上 }
放量 := VOL > MA(VOL, 5) * 1.5;     { 量大于 5 日均量 1.5 倍 }
结果: 多头 AND 放量;                { 同时满足 → 输出 1 }

结果 为 1 表示「多头排列且放量」。这正是条件选股和交易信号的核心写法。

小结

  • := 赋值不画线,: 输出画线;语句以 ; 结尾。
  • 参数用 INPUT 声明,代码里直接用名字。
  • 行情数据用 CLOSE/OPEN/HIGH/LOW/VOL,历史用 REF
  • 运算符分算术 / 比较 / 逻辑三组;VARIABLE 声明跨 K 线的全局变量。

能看懂上面「多头+放量」这段,你的语法基础就过关了。接下来学 控制流与语句,让公式具备分支和循环能力。