金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 466|回复: 6

EXTGBDATA 函数问题

[复制链接]

12

主题

47

帖子

47

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
发表于 2026-7-7 09:39 | 显示全部楼层 |阅读模式
后台程序化里我用 EXTGBDATA 存全局变量,记录价格穿透通道下轨超过 N 个点时的最低价和深度

我有两个方案:
A 有穿透记录 + 金叉成立 → 开仓
B 有穿透记录 + 穿透深度 ≥ 20 个点 → 不等金叉,直接开

但是出现问题。昨晚夜盘 21:00 穿透深度 28 个点,B的条件满足了,但当时其余条件没满足。到今天早上 09:09 全都满足了 ,路径B用昨天 21:00 的穿透极值直接开仓了——中间隔了二十多根 K 线,价格早就变了,我应该用什么思路解决这个问题呢?请老师指导一下
回复

使用道具 举报

1

主题

199

帖子

199

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-7-7 10:02 | 显示全部楼层
应该是对全局变量的赋值不够严谨。
您倒数第二行里的其余条件满足,也要同步作为记录穿透深度的一个条件吗?


平仓要赋为0,为开启新一轮的“开仓判断”做准备。
回复

使用道具 举报

12

主题

47

帖子

47

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
 楼主| 发表于 2026-7-7 10:14 | 显示全部楼层
您倒数第二行里的其余条件满足,也要同步作为记录穿透深度的一个条件吗?------我不太理解这句话,我的想法是:比如其余条件都满足,此时穿透深度 28 个点,≥20个点,→ 不等金叉,直接开,如果 虽然穿透深度 30个点了,但是其余条件未满足,那么不执行开仓。
"平仓要赋为 0"——如果我是通过金字塔界面手动平仓的(不是策略代码触发的平仓信号),策略里写的IF THOLDING=0 THEN 赋零会在下个 tick 跑到吗?还是手动平仓后 EXTGBDATA 里残留的旧极值会一直存在、污染下一轮开仓判断?需要在代码里做什么特殊处理吗?
回复

使用道具 举报

12

主题

47

帖子

47

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
 楼主| 发表于 2026-7-7 10:59 | 显示全部楼层
老师 ,上一次 您用EXTGBDATA 赋为0的操作,形成闭环的,这个思路能做参考吗?请指导一下
回复

使用道具 举报

1

主题

199

帖子

199

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-7-7 10:59 | 显示全部楼层
(1)要在代码里具体写明,平仓后,EXTGBDATA的值赋值为0,示例如下:

IF NOT(TACCOUNT(53)) THEN EXIT;//账户登陆异常直接退出,防止账户异常登陆时,对全局变量赋值

BH:=TBUYHOLDINGEX('','',2);        //多头持仓,含平多未成交单
BH1:=TBUYHOLDINGEX('','',1);        //多头可用持仓
//SH:=TSELLHOLDINGEX('','',2);     //空头持仓
KD_W_S:=TGLOBALSUBMITEX(1,'','',0);//开多未成交单数量
//KK_W_S:=TGLOBALSUBMITEX(3,'','',0);//开空未成交单数量
DC:=BH+KD_W_S;                    //实际账户多头持仓数量(含开多未成交单,平多未成交单)

IF DC=0 THEN BEGIN
   EXTGBDATASET(STKLABEL&'DK',0);     //如果账户的仓位为0,全局变量赋值为0
END

IF TBUYHOLDINGEX('','',1)>0 AND 平仓条件 THEN BEGIN       //平仓
   TSELL(1,平仓手数,MKT);
   EXTGBDATASET(STKLABEL&'DK',1);     //自动平仓后,全局变量赋值为0
   END

(2)我的想法是:比如其余条件都满足,此时穿透深度 28 个点,≥20个点,→ 不等金叉,直接开,
        如果 虽然穿透深度 30个点了,但是其余条件未满足,那么不执行开仓。
你定义了哪个全局变量,什么时候赋值,你像前面(1)的例子里,我定义了“代码DK”的全局变量,如果仓位为0时菜肴开启新一轮的开仓操作,那就要很明确的写明,仓位为0时要赋值为0,自动平仓后也要赋值为0,用两种情况来覆盖到手动平仓和自动平仓的情况。
回复

使用道具 举报

12

主题

47

帖子

47

积分

Rank: 4

等级: 专业版

注册:
2025-12-17
曾用名:
 楼主| 发表于 2026-7-7 11:14 | 显示全部楼层
老师,我定义了穿透价格和穿透深度两个全局变量,穿透发生时写入,金叉/死叉时清零。按照您(1)的模板,我加 IF DC=0 THEN 全部赋零 就能覆盖手动平仓的情况了是吧?按照您(1)的模板,我加 IF DC=0 THEN 全部赋零 就能覆盖手动平仓的情况了是吧? 《但是出现问题。昨晚夜盘 21:00 穿透深度 28 个点,B的条件满足了,但当时其余条件没满足。到今天早上 09:09 全都满足了 ,路径B用昨天 21:00 的穿透极值直接开仓了》  这个问题 也可以通过这个方式解决是吗
回复

使用道具 举报

1

主题

199

帖子

199

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-7-7 11:21 | 显示全部楼层
全局变量的问题,归根结底是我们的底层赋值逻辑的问题。
(1)您加 IF DC=0 THEN 全部赋零 就能覆盖手动平仓的情况了.

(2)定义了穿透价格和穿透深度两个全局变量,穿透发生时写入,金叉/死叉时清零。
        这个赋值逻辑里,没有覆盖到您说的情况
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-26 14:13 , Processed in 0.134353 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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