金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 228|回复: 3

技术指标公式

[复制链接]

2

主题

4

帖子

4

积分

Rank: 4

等级: 专业版

注册:
2026-9-1
曾用名:
发表于 2026-9-10 13:07 | 显示全部楼层 |阅读模式
编写 PEL 指标,代码所有语句均添加英文半角分号,标点无中文符号、无肉眼可见空格。
只要在代码内使用 `STKINDI` 做跨指标读取,编译直接报错:**语句末尾缺少分号**。

>
> 代码内每行结尾都带英文`;`,不存在漏写分号的情况,报错属于误导性提示。

## 测试过程(已做隔离排查,分步验证)

1. 基础空框架代码(无 STKINDI)

```
Vars
    BuySig:Numeric;
    SellSig:Numeric;
OUT_BUY:BuySig;
OUT_SELL:SellSig;
Begin
    BuySig:=0;
    SellSig:=0;
End
```

✅ 这段代码**编译正常,无任何报错**,证明指标基础语法框架本身没问题,变量定义、输出序列`OUT_XX:`的放置位置符合 PEL 语法规范。

2. 加入 STKINDI 跨指标调用之后,立即触发报错

```
Vars
    BuySig:Numeric;
    SellSig:Numeric;
OUT_BUY:BuySig;
OUT_SELL:SellSig;
Begin
    BuySig:=STKINDI('','TradeSignal_5Min.SIG_BUY',0,0,0);
    SellSig:=STKINDI('','TradeSignal_5Min.SIG_SELL',0,0,0);
End
```

❌ 编译提示:**语句末尾缺少分号**

- STKINDI 参数按文档填写 5 个参数(品种,指标。输出序列,输出序号,周期序号,坐标轴类型)
- 指标`TradeSignal_5Min`已经预先定义输出序列 `SIG_BUY、SIG_SELL`
- 全部标点英文半角,无复制带来的隐藏全角空格,手动输入测试,报错不变。

## 疑问向官方技术员咨询

1. 金字塔 7.21 版本,**技术指标公式内,STKINDI 读取【指标名。输出序列】这种写法,是否存在内核 BUG?**
2. 7.21 的 PEL 解析器,在解析 STKINDI 跨指标引用时,是否会错误抛出「语句末尾缺少分号」的误导报错?
3. 在 7.21 版本,如果需要在一个技术指标读取另外一个指标的输出信号,**7.21 可用的标准正确写法是什么?**
4. 如果 7.21 技术指标不支持 STKINDI 跨指标读取指标输出,有什么替代方案,实现多品种后台程序化读取外部指标信号?

## 补充说明

我们的目标:
后台程式化任务,监控全品种池,读取策略指标计算出来的开平信号(0/1),实现预警,**仅预警、不自动下单**。
不想使用交易系统公式,因为交易系统公式语法限制太强,无法自由编写风控逻辑。

回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-10 13:11 | 显示全部楼层
本帖最后由 资深技术07 于 2026-9-10 13:14 编辑

被调用指标TradeSignal_5Min  全部代码发一下
STKINDI 读取'指标名.变量名',这种写法,被引用变量必须是以:做变量的线输出类型,如下图所示


截图202609101312512107.png
回复

使用道具 举报

2

主题

4

帖子

4

积分

Rank: 4

等级: 专业版

注册:
2026-9-1
曾用名:
 楼主| 发表于 2026-9-10 13:31 | 显示全部楼层
资深技术07 发表于 2026-9-10 13:11
被调用指标TradeSignal_5Min  全部代码发一下
STKINDI 读取'指标名.变量名',这种写法,被引用变量必须是以 ...

## 指标 1:TradeSignal_5Min(策略主指标,副图)

>
> 作用:因子计算、风控判断,向外输出 SIG_BUY / SIG_SELL 序列信号

```
Vars
    //=====这里填写你自己的因子、风控变量,示例仅演示结构=====
    MA_SHORT:Numeric;
    MA_LONG:Numeric;
SIG_BUY:0;   //【序列输出,STKINDI可读取】做多信号 1触发,0无信号
SIG_SELL:0;  //【序列输出,STKINDI可读取】做空信号 1触发,0无信号
Begin
    // 示例因子逻辑,替换为你的真实开平+风控条件
    MA_SHORT:=MA(C,5);
    MA_LONG:=MA(C,20);

    // 做多条件
    if(MA_SHORT > MA_LONG) then
    begin
        SIG_BUY:=1;
    end
    else
    begin
        SIG_BUY:=0;
    end;

    // 做空条件
    if(MA_SHORT < MA_LONG) then
    begin
        SIG_SELL:=1;
    end
    else
    begin
        SIG_SELL:=0;
    end;
End
```

## 指标 2:TradeSignal_LogWriter(读取转发指标,副图)

>
> 作用:STKINDI 跨指标读取 TradeSignal_5Min 输出的 SIG_BUY、SIG_SELL;向外输出 OUT_BUY、OUT_SELL 供给后台程式预警

```
Vars
    BuySig:Numeric;
    SellSig:Numeric;
OUT_BUY:BuySig;
OUT_SELL:SellSig;
Begin
    // STKINDI参数:品种,指标名.序列名,输出序号,周期序号,坐标轴类型
    BuySig:=STKINDI('','TradeSignal_5Min.SIG_BUY',0,0,0);
    SellSig:=STKINDI('','TradeSignal_5Min.SIG_SELL',0,0,0);
End
```

# 配套文字说明(一并复制提交论坛)

1. 运行周期:**5 分钟 K 线,走完 K 线才执行计算**
2. 操作顺序:先编译保存 `TradeSignal_5Min`,再编译 `TradeSignal_LogWriter`
3. 现象:

- TradeSignal_5Min 单独编译正常
- 写入上面 TradeSignal_LogWriter 代码,只要加入两行 STKINDI,编译报错:**语句末尾缺少分号**
- 代码所有标点均为英文半角,无中文符号、无全角空格,手动录入测试,报错不变

4. 疑问:
已经按照文档要求,在主指标`TradeSignal_5Min`定义了冒号序列输出`SIG_BUY:0; SIG_SELL:0;`,属于序列画线变量。
7.21 版本技术指标内,`STKINDI('','TradeSignal_5Min.SIG_BUY',0,0,0)` 为什么依然编译报错?
7.21 技术指标中 STKINDI 读取外部指标序列的标准写法应该是什么?

回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-10 14:06 | 显示全部楼层
本帖最后由 资深技术07 于 2026-9-10 14:08 编辑

STKINDI 读取'指标名.变量名',这种写法,被引用变量必须是以:做变量的线输出类型
被调用指标写法错误,对您的被调用指标做了修改,可以正常调用。请您复制到本地再试试(现在是调用部分有问题,所以我主要跟踪您的被调用部分,其它地方,不做修改和跟踪)

被调用指标:TradeSignal_5Min代码修改如下
[PEL] 复制代码
VARIABLE:SBUY:=0,SSELL:=0;
MA5:=MA(C,5);
MA20:=MA(C,20);

// 做多条件
if MA5>MA20 then
BEGIN
SBUY:=1;
SSELL:=0;
END

if MA5<MA20 then
BEGIN
SBUY:=0;
SSELL:=1;
END
 
SIG_BUY:SBUY;
SIG_SELL:SSELL;



主指标
[PEL] 复制代码
SD:STKINDI('','TradeSignal_5Min.SIG_BUY',0,0,0);
SS:STKINDI('','TradeSignal_5Min.SIG_SELL',0,0,0);



截图202609101402356137.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2026-9-18 04:57 , Processed in 0.175077 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表