金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 22|回复: 9

图表信息汇总到全局变量问题

[复制链接]

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
发表于 2026-9-18 10:02 | 显示全部楼层 |阅读模式
老师好: 我以下的代码,是将多个策略的开平信号汇总到全局变量中进行加总,但实际运行时,会发现,有些策略在图表加载上有信号,但实际msgout不报单、全局变量EXTGBDATASET也不写入,也即有很多策略丢单了,问题出在哪里了?
IF PK AND HOLDING<>0 THEN BEGIN   
SELLSHORT(1,HOLDING,MARKET);  
EXTGBDATASET(STKLABEL&'虚',EXTGBDATA(STKLABEL&'虚')+SS); //
MSGOUT(ISLASTBAR,STRLEFT(FORMULANAME,3)&'|平空|'&STKLABEL);
END
IF KK AND HOLDING=0 THEN BEGIN
BUYSHORT(1,SS,MARKET);
EXTGBDATASET(STKLABEL&'虚',EXTGBDATA(STKLABEL&'虚')-SS);//注意空空加减号!
MSGOUT(ISLASTBAR,STRLEFT(FORMULANAME,3)&'|开空|'&STKLABEL);   
END  
回复

使用道具 举报

1

主题

318

帖子

318

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-18 10:56 | 显示全部楼层
全局变量EXTGBDATASET不能用于图表。只能用于后台程序化。

可以通过STKINDIEX函数,调用多个策略的虚拟持仓进行加总的
STKINDIEX函数,使用说明,供您参考:https://www.weistock.com/docs/PE ... 6%E5%85%AC%E5%BC%8F
回复

使用道具 举报

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-9-18 11:35 | 显示全部楼层
问题:1、EXTGBDATASET在使用说明中只是说不建议在图表交易中使用,未说明原因。我们在过去3年中均是如上述代码方式使用的,均未发生不能写入和报送问题,我估计是新版本带来的问题。这个还请技术去核实下底层代码的逻辑;2、STKINDIEX的使用,是“引用任意品种、参数、指标”的用法,没有引用不同公式的用法,实际是无法完成前台信号的加总的。3、多策略的截面头寸加总后再交给后台去真实执行,这是组合策略的根本,如果不能用EXTGBSET,那么其他的全局记录变量GETINIFILE、GETREGVAL的使用经验如何,这个没有用过,还请务必予以给出明确路径。
回复

使用道具 举报

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-9-18 12:05 | 显示全部楼层
补充:1、我的代码中的EXTGBDATASET名义上看是在图表交易框架下,但事实上也是通过后台预警方式发出信号,也只是发出信号,事实上很难说是在进行图表交易;2、在过去早期版本中,该方式已经成熟使用了3年,至少被我们认为是前台信号加总+后台合并执行的唯一高效合理方式,或是金字塔团队针对组合策略信号执行方案的设计的初衷,也是该软件的核心功能,否则我不知道有别的什么更高效方式。3、如今的问题卡在有些策略写、报,而有些策略则不写也不报,还请技术就这个情况背后可能的问题列个明确的清单,不能简单的一甩了之,否则就没有整体解决方案了。
回复

使用道具 举报

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-9-18 12:13 | 显示全部楼层
再补充:我之前说的对STKINDIEX的使用方式应该有误,该函数理论上确实应该可以引用其他交易公式的持仓信号,但问题是在时间序列上,组合策略的多空信号加减必须有一个记录值被时刻记录在案并进行前后K比较的,这个用STKINDIEX应该是无法实现的,对么?
回复

使用道具 举报

1

主题

318

帖子

318

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-18 13:29 | 显示全部楼层
如果是运行在后台程序化,那1楼代码是可以的。您说全局变量不写入,请在全局变量写入上,加上是否为最后一根K线的判断,再输出全局变量值看看

IF ISLASTBAR THEN begin
EXTGBDATASET(STKLABEL&'虚',EXTGBDATA(STKLABEL&'虚')+SS); //
DEBUGFILE('D:\TEST.TXT','虚为%.0f',EXTGBDATA(STKLABEL&'虚')+SS));
end


回复

使用道具 举报

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-9-18 13:52 | 显示全部楼层
这个ISLASTBAR的条件,之前我也写上了,结果依然不理想,大量的单元丢失信号,这在1年前的0702版本之前是完全不可想象的。
回复

使用道具 举报

1

主题

318

帖子

318

积分

Rank: 8Rank: 8

等级: 超级版主

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

您用的是最新8.0BETA版吗?
加入ISLASTBAR的条件和DEBUGFILE调试运行以后,您将调试文件,发出来看看

IF ISLASTBAR THEN beginDEBUGFILE('D:\TEST.TXT','SS为:%.0f',SS);
DEBUGFILE('D:\TEST.TXT','虚值:%.0f',EXTGBDATA(STKLABEL&'虚'));
EXTGBDATASET(STKLABEL&'虚',EXTGBDATA(STKLABEL&'虚')+SS);
DEBUGFILE('D:\TEST.TXT','虚赋值后为:%.0f',EXTGBDATA(STKLABEL&'虚'));
end

回复

使用道具 举报

1

主题

6

帖子

16

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-9-18 14:09 | 显示全部楼层
我用的是7.21版本,还没下载8.0, 现在的问题是写入全局变量和报送信息都是时有时无,不是全是或全非,无法定位问题所在。 我估计了几个可能的解决方案,你帮我看看,那个有可能解决问题:1、将虚仓定义提到IF条件之外: 虚仓:=EXTGBDATA(STKLABEL&'虚')(公式名照此办理);2、运行公式的IF条件写成:  IF ISLASTBAR AND KD THEN BUY(…… /EXTGBDATASET…… 3、取消仅刷最后K模式?4、由于运行的是1分钟策略,后台预警默认的860K不够,将其改为1500+?其他可能的解决方案?
回复

使用道具 举报

1

主题

318

帖子

318

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-9-18 14:17 | 显示全部楼层
用8.0来跟踪,其它都先不做调整,
只做后2项:3、取消仅刷最后K线,4、增加数据为1500.

调试代码按照8楼写的来,如果全局变量,写库还是有问题,您发下调试文件,我本地也会尝试跟踪
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 16:24 , Processed in 0.191988 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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