金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 353|回复: 27

麻烦帮我看小段代码,未能正确开仓

[复制链接]

24

主题

174

帖子

174

积分

Rank: 4

等级: 专业版

注册:
2024-9-22
曾用名:
发表于 2025-3-19 15:56 | 显示全部楼层 |阅读模式
IF XSLT=1 THEN                                                                                                           //开空                     
BEGIN
IF SCC<10 AND TGLOBALSUBMITEX(3,'','',0)>=1 AND LT3>62 AND ABS(TIMETOT0(DYNAINFO(207))-LK)>5 THEN
BEGIN
TCANCELEX(1,3,'',STKLABEL);
LK:=TIMETOT0(DYNAINFO(207));
END


TBUYSHORT(TGLOBALSUBMITEX(3,'','',0)=0 AND MB-TSELLHOLDINGEX('','',1)>=1,MB-TSELLHOLDINGEX('','',1),LMT,XCLOSE);     


END
蓝色部分撤单正常完成,但是红色部分开仓没动作。

回复

使用道具 举报

2

主题

4744

帖子

4744

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-19 16:22 | 显示全部楼层
预警触发了没下单成功,还是预警都没有触发?

回复

使用道具 举报

24

主题

174

帖子

174

积分

Rank: 4

等级: 专业版

注册:
2024-9-22
曾用名:
 楼主| 发表于 2025-3-19 16:38 | 显示全部楼层
没有预警,没有产生信号
回复

使用道具 举报

2

主题

4744

帖子

4744

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-19 16:43 | 显示全部楼层
本帖最后由 资深技术05 于 2025-3-19 16:46 编辑

撤单也是需要和柜台通信的,但是这个时间一般是比你程序运行代码要慢得多。所以当你这里代码执行到开仓语句的时候,大概率订单状态还没更新。这导致开仓条件判定为不满足。

但是后续你外部的 if XSLT=1 如果能满足,那应该会在第二次进入时候重新开仓的。你这个XSLT变量在后面代码中是否进行了赋值操作,如果是这样 是会导致 追单所在代码的外部if无法满足了,从而无法再次开仓。
以下提供一个范例,用来在撤单后进行标记,避免撤单未成功时候执行追单的问题:

[PEL] 复制代码
globalvariable:ct:=0;

//有平多未成交单,且5秒未成交,则撤单
if tisremain(1)=1 and tsubmit(1)>5 then begin
 tcancel(1,1);//撤单完成后进行追单 
 ct:=currenttime;
end


if currenttime-ct>=10 and ct<>0  then 
begin 
tbuy(1,1,mkt);
ct:=0;
end


回复

使用道具 举报

24

主题

174

帖子

174

积分

Rank: 4

等级: 专业版

注册:
2024-9-22
曾用名:
 楼主| 发表于 2025-3-20 14:47 | 显示全部楼层
IF XBYT=1 THEN                                                                                                           //开多
BEGIN
IF SCC<10 AND TGLOBALSUBMITEX(1,'','',0)>=1 AND LT1>62 AND ABS(TIMETOT0(DYNAINFO(207))-LK)>5 THEN
BEGIN
TCANCELEX(1,1,'',STKLABEL);
LK:=TIMETOT0(DYNAINFO(207));
END
TBUY(TGLOBALSUBMITEX(1,'','',0)=0 AND MB-TBUYHOLDINGEX('','',1)>=1,MB-TBUYHOLDINGEX('','',1),LMT,XCLOSE);         
END

这是和开空完全对应的开多代码,执行完全正常,撤单用新价格开仓。
完全没线索了
回复

使用道具 举报

2

主题

4744

帖子

4744

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-20 15:17 | 显示全部楼层
XSLT 这个只需要输出看下。

需要判断你后续执行是不是都没有进入到那个if语句中。

如果能进入if语句后面,那还要进一步输出 平空条件里的函数的返回值 来定位是哪里判断出错了。
回复

使用道具 举报

24

主题

174

帖子

174

积分

Rank: 4

等级: 专业版

注册:
2024-9-22
曾用名:
 楼主| 发表于 2025-3-20 15:49 | 显示全部楼层
BYT:=IF(CTR3=CTR AND HIC=1 AND TR1=1,1,0);
SLT:=IF(CTR3=CTR AND LOC=1 AND TR1=1,1,0);

XBYT:=BYT[BARPOS-1];
XSLT:=SLT[BARPOS-1];

也是完全对称的语句  
回复

使用道具 举报

2

主题

4744

帖子

4744

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-20 16:08 | 显示全部楼层
用DEBUGFILE 进行一些输出吧。以实际运行时的输出结果来判断下当时发生的情况。

TGLOBALSUBMITEX 函数值和持仓结果也一并输出下。从代码上暂时看不出问题。
回复

使用道具 举报

24

主题

174

帖子

174

积分

Rank: 4

等级: 专业版

注册:
2024-9-22
曾用名:
 楼主| 发表于 2025-3-20 16:20 | 显示全部楼层
可以用回测做DEBUG吗?
回复

使用道具 举报

2

主题

4744

帖子

4744

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-20 16:26 | 显示全部楼层
那只能用DEBUGFILE2

但是你这个问题你想用回测去排查 不一定可以。有些函数仅仅运行时有效,回测中未必有值。

尤其是和账号相关的函数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 15:04 , Processed in 0.207144 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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