金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 87|回复: 6

VARIABLE 变量是怎么写的

[复制链接]

14

主题

61

帖子

61

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
发表于 2026-9-14 10:53 | 显示全部楼层 |阅读模式
策略周期是 5 分钟,后台程序化用 tick 刷新(逐笔驱动)。现在 VARIABLE 声明的变量,在同一根 5 分钟 K 线内的多个 tick 之间,值没有保持——每个 tick 都回到初始值 0。
    1. OI_LAST_TIME 没保持 → 资金流累加每 tick 被清零 → 占比恒 0 或 100
    2. LAST_TIME 没保持 → DEBUG 门控失效 → 同一根 K 线每个 tick 都打印
   金字塔 PEL 的 VARIABLE 变量,在"5分钟周期 + tick刷新"模式下,同一根 K 线内的多个 tick 之间,到底保不保持值?如果要跨 tick 累加,该用 VARIABLE 还是别的(比如 EXTGBDATA)?
    代码1:VARIABLE 声明(两个变量都在这一行)

    VARIABLE: LAST_TIME=0, _HI=0, _LO=99999, L_ENTRY=0, S_ENTRY=0, L_TYPE=0, S_TYPE=0, BUY_ACC=0, SELL_ACC=0, OI_LAST_TIME=0, BUY_ACC_S=0, SELL_ACC_S=0;

    代码2:资金流清零段(用 OI_LAST_TIME)
    IF TIME <> OI_LAST_TIME THEN BEGIN
        OI_LAST_TIME := TIME;
        BUY_ACC_S := BUY_ACC;
        SELL_ACC_S := SELL_ACC;
        BUY_ACC := 0;
        SELL_ACC := 0;
    END;

    IF CHG_OI>0 AND CHG_OI<CUR_VOL AND BUYVOL>0  THEN BUY_ACC := BUY_ACC + BUYVOL;
    IF CHG_OI>0 AND CHG_OI<CUR_VOL AND SELLVOL>0 THEN SELL_ACC := SELL_ACC + SELLVOL;

    预期:同一根 5 分钟 K 线内,BUY_ACC / SELL_ACC 应该跨 tick 累加,只在 K 线切换(TIME 变化)时清零。
    实际:每个 tick 都被清零,BUY_ACC / SELL_ACC 永远只有当前这一笔 tick 的值。

    代码3:DEBUG 门控段(用 LAST_TIME)
    ═══════════════════════════════════

    IF TIME <> LAST_TIME THEN BEGIN
        LAST_TIME := TIME;
        DEBUGFILE('C:/Users/13187/Desktop/debug_' & STKLABEL & '.txt',
            NUMTOSTR(DATE,0) & ' ' & NUMTOSTR(TIME,0) & ' ...', 1);
    END;

    预期:同一根 5 分钟 K 线只打印第一行(TIME 相同则不再打印)。
    实际:同一根 K 线(TIME 都是 144000)每个 tick 都打印一行。



    两段代码的预期都依赖"VARIABLE 变量在同一根 K 线内跨 tick 保持值",但现在两个变量都表现成"每个 tick 回到 0"。tick 刷新模式下 VARIABLE 的保持机制到底是怎么算的,正确写法是什么。

回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-14 11:21 | 显示全部楼层
VARIABLE 记录的总是,每一根K线结束时的值。
指标加载后,定义语句在第一根K线处初始化为设定值,后面的K线调用此全局变量计算时,调用到的值是上一根K线计算的返回值。当行情更新,指标重新刷新时,那么此变量又会在第一根K线处被定义语句初始化。

全局变量的应用,使用说明,供您参考:
https://www.weistock.com/docs/PE ... 8F%98%E9%87%8F.html
回复

使用道具 举报

14

主题

61

帖子

61

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
 楼主| 发表于 2026-9-14 11:28 | 显示全部楼层
我的策略周期是5分钟,后台程序化是不是采用Tick逐笔刷新?

我需要计算“当前正在形成的5分钟K线内,从该5分钟K线开始到当前Tick为止的 BUYVOL 累计值和 SELLVOL 累计值”。

例如一根5分钟K线内部有多个Tick:
Tick1 BUYVOL=5
Tick2 BUYVOL=3
Tick3 SELLVOL=4
Tick4 BUYVOL=8

我希望在Tick4时得到:
BUY_ACC=16
SELL_ACC=4

由于VARIABLE是K线级变量,无法在5分钟K线内部跨Tick迭代,请问金字塔PEL中是否有能够读取当前5分钟K线内部逐笔数据并进行累计/统计的函数?

有的话,能不能提供具体函数名和完整示例代码。

没有,是否可以通过独立的逐笔指标/5分钟指标先计算,再让5分钟策略读取该指标结果?这个具体应该如何实现呢?
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-14 11:35 | 显示全部楼层
BUYVOL 、SELLVOL,只在分笔周期有效。
通过独立的逐笔指标/5分钟指标先计算,再让5分钟策略通过STKINDI函数读取该指标结果

STKINDI函数使用说明,供您参考:https://www.weistock.com/docs/PE ... 6%E5%85%AC%E5%BC%8F
回复

使用道具 举报

14

主题

61

帖子

61

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
 楼主| 发表于 2026-9-14 12:00 | 显示全部楼层
明白,也就是说 BUYVOL、SELLVOL 必须在分笔周期的独立指标中计算,然后5分钟策略通过 STKINDI 读取。

那么请问具体应该怎么实现“当前5分钟K线内 BUYVOL/SELLVOL 的累计”?

例如当前5分钟内:

Tick1:BUYVOL=5
Tick2:BUYVOL=8
Tick3:SELLVOL=3
Tick4:BUYVOL=7

我希望独立指标最终输出:

BUY5M=20
SELL5M=3

然后5分钟策略通过 STKINDI 读取 BUY5M、SELL5M。

麻烦请提供一个完整的PEL示例,包括:

独立分笔指标如何累计 BUYVOL/SELLVOL;
如何识别5分钟K线切换并重新开始累计;
如何将结果输出给 STKINDI;
5分钟主策略如何通过 STKINDI 正确读取。

主要我需要的是“当前正在形成的5分钟K线,截至当前Tick”的累计值,而不是上一根已经结束的5分钟K线值。
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-14 15:04 | 显示全部楼层
代码已经在编写中,请您耐心等待
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-14 15:42 | 显示全部楼层
TICKVOL
[PEL] 复制代码
CON:=MOD(MINUTE,5)=0 AND REF(SECOND,1)<=59 AND REF(SECOND,1)>=50 AND SECOND>=0 AND SECOND<=1;
SUMB:IF(TIME<>CLOSETIME(0),SUM(BUYVOL,BARSLAST(CON)+1),REF(SUM(BUYVOL,BARSLAST(CON)+1),1)+BUYVOL);
SUMS:IF(TIME<>CLOSETIME(0),SUM(SELLVOL,BARSLAST(CON)+1),REF(SUM(SELLVOL,BARSLAST(CON)+1),1)+SELLVOL);


5分钟K线主调用代码
[PEL] 复制代码
SUMBVOL:STKINDI('','TICKVOL.SUMB',0,0);//5分钟K线累计BUYVOL
SUMSVOL:STKINDI('','TICKVOL.SUMS',0,0);//5分钟K线累计SELLVOL


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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