金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3104|回复: 15

代码执行问题

[复制链接]

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
发表于 2023-12-7 15:29 | 显示全部楼层 |阅读模式
金字塔执行情况1.png 金字塔执行情况2.png 金字塔执行情况3.png
如图在10分钟图上,11点20分这个K线是一个横线,也就是只有一个单独的成交价,没有任何信号,在调试日志里显示
11点10分以后到11点20分结束的这段时间里,还在执行平仓代码,既然没有信号,条件不成立,就应该不会运行开平仓代码,
可为什么日志记录显示程序仍然执行了平仓代码呢?如果真有这个问题,就会导致重复开平仓的严重后果。
回复

使用道具 举报

3

主题

731

帖子

772

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2023-12-7 15:35 | 显示全部楼层
这是你自己输出的日志,你输出的是条件成立的位置。平仓语句中或者控制条件中要判断是不是有持仓。没有持仓的情况下。不应该进入判断体的逻辑部分。

需要你自己条件控制处理。
回复

使用道具 举报

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-8 16:10 | 显示全部楼层
admin 发表于 2023-12-7 15:35
这是你自己输出的日志,你输出的是条件成立的位置。平仓语句中或者控制条件中要判断是不是有持仓。没有持仓 ...

输出日志记录语句就在开平仓语句后面,都是根据持仓来判断条件的,
在没有信号的K线上,holding>0不成立,为什么还在执行代码呢?
很明显,是在条件不成立的时候输出的,这不是我能控制的,
我觉得这是软件的bug
回复

使用道具 举报

37

主题

9961

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-12-8 19:49 | 显示全部楼层
本帖最后由 技术006 于 2023-12-8 20:08 编辑

代码贴出来看下。如果现在在能出现,你可以输出holding和参与条件的因子值,根据这些因子值人为验证即可。

【在没有信号的K线上,holding>0不成立,为什么还在执行代码呢?】holding是持仓数量,不是开仓位置的状态函数,k线上没有信号,不代表此时的holding是0,只要开过理论仓位并且没有平仓,holidng始终都不是0
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-11 11:12 | 显示全部楼层
技术006 发表于 2023-12-8 19:49
代码贴出来看下。如果现在在能出现,你可以输出holding和参与条件的因子值,根据这些因子值人为验证即可。
...

以前就出现过,也提过,一直存在这个现象,如果照你说的开过仓,就会有开仓记录输出并出开仓信号,可是没有,说明根本没有开过仓,所以平仓条件是不成立的,所以我认为这段平仓记录是延续上个K线的平仓信号继续执行的。如果说holding不能作为开仓状态,那又如何根据持仓来区分开平仓呢?那不乱了吗?
回复

使用道具 举报

37

主题

9961

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-12-11 12:52 | 显示全部楼层
本帖最后由 技术006 于 2023-12-11 13:00 编辑

把你完整测试代码贴出来。或者如果现在还有你说的现象,直接提供向日葵账号远程看。
这种问题不可能是语言底层bug,只可能是代码逻辑条件写的有问题。

holding是理论仓位,不是状态函数,等于0,代表当前持仓持仓为0,负数为空头数量,正数为多头数量。


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-11 14:01 | 显示全部楼层
技术006 发表于 2023-12-11 12:52
把你完整测试代码贴出来。或者如果现在还有你说的现象,直接提供向日葵账号远程看。
这种问题不可能是语言 ...

MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);

手数:=ss;
//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件
DEBUGFILE2('g:\test.txt','持仓:%.2f',holding,1);
//交易系统

平多:SELL(开空平多条件,手数,MARKET);
if 开空平多条件 then begin
DEBUGFILE2('g:\test.txt','多平时间:%.2f',TIME,1);
end
开多:BUY(开多平空条件,手数,MARKET);
if 开空平多条件 then begin
DEBUGFILE2('g:\test.txt','开多时间:%.2f',TIME,1);
end
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;付测试结果, err.txt (21.36 KB, 下载次数: 1893)
回复

使用道具 举报

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-11 14:04 | 显示全部楼层
lfm6289 发表于 2023-12-11 14:01
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);

更正,附件不对,这个才是

err.txt

18.17 KB, 下载次数: 1905

回复

使用道具 举报

88

主题

273

帖子

273

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-11 14:14 | 显示全部楼层
技术006 发表于 2023-12-11 12:52
把你完整测试代码贴出来。或者如果现在还有你说的现象,直接提供向日葵账号远程看。
这种问题不可能是语言 ...

13点57分以后就没有任何开平记录了,都是延续大约半分钟后就不输出开平,只输出持仓了,
说明它就是延续之前的输出,只不过比较短暂。
而且这个测试里开平都是乱的,也不是根据之前的信号的,何况再加上holding,就更乱了。
回复

使用道具 举报

37

主题

9961

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-12-11 14:19 | 显示全部楼层
本帖最后由 技术006 于 2023-12-11 14:23 编辑

DEBUGFILE2,是每根k都会打印输出。结果看上去不乱才怪
用DEBUGFILE才是只会在最新k上输出。https://www.weistock.com/docs/HELP/notes/%E7%A8%8B%E5%BA%8F%E5%8C%96%E4%BA%A4%E6%98%93/%E5%8F%98%E9%87%8F%E8%B7%9F%E8%B8%AA.html#高级调试技巧

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-5 10:55 , Processed in 0.122572 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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