金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3609|回复: 6

代码执行问题新

[复制链接]

90

主题

279

帖子

279

积分

等级: 免费版

注册:
2022-3-20
曾用名:
发表于 2023-12-13 14:05 | 显示全部楼层 |阅读模式
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);

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

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

平多:SELL(开空平多条件,手数,MARKET);
if 开空平多条件 then begin
DEBUGFILE('g:\test.txt','多平时间:%.2f',TIME);
end
开多:BUY(开多平空条件,手数,MARKET);
if 开多平空条件 then begin
DEBUGFILE('g:\test.txt','开多时间:%.2f',TIME);
end

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
金字塔5分信号.png
就这个代码MA均线交易系统(5,15,1) 在5分钟图上,早上第一个信号在9点35分,这个k线上执行没问题,但是在
2023-12-13 09:43:15.777    多平时间:94000.00,有个平多记录,而9点43分根本没有信号,也不应该执行平仓代码。
之后一直到13点05分,有了开仓信号,但日志记录显示在13点06分直到2023-12-13 13:16:39.473也就是13点20分
这根k线上仍然继续执行开仓代码,而这个k线上也根本没开仓信号,条件不成立。
而13点30分的平仓信号,日志显示在13点30分以后仍在执行,直到13点31分36秒才停止。
所以,已经证实这是软件的错误,也有别的人反映有同样的问题,建议你们找个T+0品种认真测试一下。
付运行日志 err2.txt (109.54 KB, 下载次数: 5740)
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

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

你看清楚你的代码是怎么写的!
你输出的holding日志是在开平仓之前,它实际上返回的是上根k上holding。不是当前开平仓后的。
你吧输出的holding放在尾部才是当根k上每次执行时的holding值。
如果你理解不了,建议你学习这个,holding类似于VARIABLE变量
https://www.weistock.com/docs/PE ... 8F%98%E9%87%8F.html




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

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

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

平多:SELL(开空平多条件,手数,MARKET);
if 开空平多条件 then begin
DEBUGFILE('g:\test.txt','多平时间:%.2f',TIME);
end
开多:BUY(开多平空条件,手数,MARKET);
if 开多平空条件 then begin
DEBUGFILE('g:\test.txt','开多时间:%.2f',TIME);
end

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

使用道具 举报

90

主题

279

帖子

279

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-13 15:10 | 显示全部楼层
技术006 发表于 2023-12-13 14:48
你看清楚你的代码是怎么写的!
你输出的holding日志是在开平仓之前,它实际上返回的是上根k上holding。不是 ...

holding在这里不是重点,因为开平条件里根本没有用到holding,你为什么避重就轻,
回避重点呢?重点是日志记录了程序在条件不成立的k线,不正确的时间执行代码,
先把这个问题解决了,再说hoding,也许就已经正常了!
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

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

1. k线图刷新一次,指标就会运行一次,debugfile也会相应输出一次。每次输出的结果只是策略当次执行的结果。你所提到的9:43分的日志结果,只能说明策略执行过程中k线数据量发生过变化。如果你的版本不是最新版本,需要升级到最新版本。

2. 13:05的k线最后一笔数据是13:03:56,之后一直到13:16:48时产生分笔。在k线图没有13:16:48这笔数据生成新k之前,K线图中最新k的时间始终都是13:05,盘口的行情跳动驱动策略执行,那么debugfile输出的结果使用都是基于13:05上计算的结果。

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

使用道具 举报

90

主题

279

帖子

279

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-13 22:39 | 显示全部楼层
技术006 发表于 2023-12-13 16:18
1. k线图刷新一次,指标就会运行一次,debugfile也会相应输出一次。每次输出的结果只是策略当次执行的结果 ...

话说的好像有点颠覆基本常识,我知道每笔数据都会执行一遍程序,但是debugfile是用条件选择执行啊,条件不成立,不应该执行,不论怎样,9:43分的输出证明了在那时就是通过了条件判断执行了输出语句,而这与图表是不相符的,条件应该是不成立的。
你怎么不看附件?13:05的k线最后一笔数据是2023-12-13 13:05:57.625,而之后到13:16分39秒每分钟都有数据产生,这期间不是间断的,不存在在13:16分48秒生成新k的说法,图上的确是少了13:10和13:15分两个K线,我不知道是什么原因,从日志看这期间是有数据的,但这是另外的问题,只要不是13点05分,这些时间执行代码就是错的,因为只有13:05分才有信号,条件才成立,才应该输出记录。
而早上的第一个信号在9点35分,从日志看,输出时间都处在这个5分钟之内,这个k线上执行就没问题,它并不是每个信号都执行错误,有时候是对的,有时候又错。

补充内容 (2023-12-13 22:49):
我用的是6.3  64位版的,是版本的问题?
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

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

最新版目前是7.0

谁告诉你中间信号一定不成立,你眼睛能盯住计算机每次计算的结果?拿最后走完的k线上的结果,说中间执行的某一次有问题,等同于一根k线出来就应该确定是阴阳k线,不应该存在不存反复交换的情况。
下午的问题自己看分笔。k线图更新指标就会刷新,debugfile就会执行一次(谁告诉你没有对应的分钟k出来图表就不执行策略)。前面已经说了,这个期间端最新k始终都是13:05,但是盘口的跳动(有委买委托变化也算跳动)也会让驱动指标执行,自然会一直输出。
软件处理机制不是你认为应该怎么样就应该怎么样的。
截图202312140818583310.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

90

主题

279

帖子

279

积分

等级: 免费版

注册:
2022-3-20
曾用名:
 楼主| 发表于 2023-12-14 15:28 | 显示全部楼层
技术006 发表于 2023-12-14 08:22
最新版目前是7.0

谁告诉你中间信号一定不成立,你眼睛能盯住计算机每次计算的结果?拿最后走完的k线上 ...

抱歉,怪我没注意用了close,不过这也不能说明我就错了,这个交叉信号不会连续出现同一个信号的,
所以即使是用close,也不应该在9点43分重复执行一个操作,13:16分,我承认是生成了一个新的K线,
13:10和13:15分上的输出我认为是正确的,因为这两个k线缺失了,信号仍然算13:05分的,但是13:16分
以后已经生成新的k线了,就不应该再执行,但日志记录它执行到13:16分39秒,这不正说明它的错误吗?
下午我把close换成了open,这样,盘中信号就不变了,但结果还是一样的!仍然是在条件不成立的时间执行代码。
而且还出现了信号出现之前一刻,就提前执行代码的现象,在14点49分49秒就开始平仓了,而平仓信号是
如图在14:50以后出现的,不但有延续,还有超前,这就很奇怪了!这又作何解释呢?
金字塔信号.png
付日志: err2.txt (12.85 KB, 下载次数: 3480)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 05:15 , Processed in 0.096692 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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