金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 100018518

有意思的问题

[复制链接]

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-18 09:40 | 显示全部楼层
100018518 发表于 2022-7-18 09:39
是不是REF再REF也会错,测试也要注意。总之,软件的bug好麻烦的

还有是不是与小数点等等等有关呢,调用的时候,数据源不一致。
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-18 09:56 | 显示全部楼层
KDPK0:ref(C<REF(C,1),1);本地用这个条件测试,在一根K线内,在等价K线上,这个值也是不会变的,只有新K出现的时候,在新的K线上值才有可能变化,你可以用十字光标定位到那根K线上,看下条件是否成立呢 。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

59

主题

226

帖子

236

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2022-7-18 10:08 | 显示全部楼层

老师:肯定会变,截图已经说明一切。更有意思的是AAA=0与AAA=1都发出指令。这就不对了!肯定是数据与计算的问题了
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-18 10:20 | 显示全部楼层
在没有十字光标下,指标值都是最新K线上的值,你截图的三张图上,AAA都是等于0,且这3张图的K线都是一样的,是否是你看到的AAA=1是在前面那个阳线上,而出现新的K线时,AAA=0的呢。我们本地测试,未发现同一根K线上这个值发现变化的现象。你可以直接用DPK0:ref(C<REF(C,1),1);这个指标来看下DPK0的值的变化情况。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

59

主题

226

帖子

236

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2022-7-18 11:27 | 显示全部楼层
技术010 发表于 2022-7-18 10:20
在没有十字光标下,指标值都是最新K线上的值,你截图的三张图上,AAA都是等于0,且这3张图的K线都是一样的 ...

老师,喔现在没在电脑旁。
但是,回测的确是AAA=0,但是
aaa:KCN=1,NODRAW,COLORWHITE;
xxx:abs(mholding)<2 and mholding>=0,NODRAW,COLORWHITE;
yyy:EXITBARS<>0,NODRAW,COLORWHITE;
zzz:(KDJ>=L&&KDJ<=H),NODRAW,COLORWHITE;
if KCN=1 and (EXITBARS<>0) and (KDJ>=L&&KDJ<=H) then begin//当收盘价上穿下轨且有空仓或无仓时
         if abs(mholding)<2 and mholding>=0  then begin
            buy(1,1,limitR,KDJ);//开多
            mHolding:=mHolding+1;              
         end   
end
指令却发出来了!

补充内容 (2022-7-18 11:28):
没在家的电脑旁


补充内容 (2022-7-18 11:34):
换成如下,也一样
if aaa=1 and (yyy=1) and (zzz=1) then begin//当收盘价上穿下轨且有空仓或无仓时
         if abs(mholding)<2 and mholding>=0  then begin
            buy(1,1,limitR,KDJ);//开多
  ...

补充内容 (2022-7-18 11:37):
几乎可以肯定的是源码问题,其中调用的数据源(源可能不同状态下会不一致,如小数点的处理等)
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-18 11:42 | 显示全部楼层
本帖最后由 技术010 于 2022-7-18 11:43 编辑

这个就是涉及到代码调试的问题了,要知道是什么原因,那只能详细输出每个值来查看了。另外你图2上确实有个三角的标记,但是默认的开多的箭头是往上的,而你的箭头是往下的,检查下这个信号是否是你提供的代码中那句buy语句触发的呢。按照你代码逻辑,AAA=0,XXX=1,YYY=1,你这个BUY开多语句肯定是不成立的,你图2那个粉红色向下的箭头,不会是这句开多语句触发的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

59

主题

226

帖子

236

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2022-7-18 11:55 | 显示全部楼层
技术010 发表于 2022-7-18 11:42
这个就是涉及到代码调试的问题了,要知道是什么原因,那只能详细输出每个值来查看了。另外你图2上确实有个 ...

老师好。谢谢您的细心。要将buy改成buyshort,我只是抄错了公式。其余都对。aaa=0恒成立,但是发出开空仓信号。
最近焦虑了好几周,发现不了问题,大早起来看到了,却抄错了。!!

补充内容 (2022-7-18 11:56):
是buyshor触发
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-18 13:18 | 显示全部楼层
1、那需要整体检查代码了,是否你代码中有多个开空语句呢。单看这一段代码,条件不满足,是不会触发这个开空信号的。
2、如果要知道具体的原因,那就只能调试代码来检查具体的问题了。代码调试本身就是一个精细活,需要细心且需要花费大量时间的,往往比写代码本身花费的时间还要多,如果要跟踪这种异常情况,那可能需要借助debugfile调试函数来输出了,把每次计算出的值都输出,来看是否在同一个K线内,获取ref的值是否发生变化,只能通过debugfile输出的各个值来记录下当时的情况了,否则无法解释这个现象,只能是各种猜测,也解决不了实际问题。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-18 16:19 | 显示全部楼层
技术010 发表于 2022-7-18 13:18
1、那需要整体检查代码了,是否你代码中有多个开空语句呢。单看这一段代码,条件不满足,是不会触发这个开 ...

老师好,我也认为不会触发的,但是的确是触发了。回家我用debugfile调试函数来输出回测结果看看。现在可以肯定的是上述图都是发生在一根K。而且开空、开多都只有一个组合条件。且条件相反,意即:若C>O开多,则C<O开空。

补充内容 (2022-7-18 16:22):
实际上,上述图都是回测当根K的不同时间段数据,而且标有倒计时时间戳。几乎等同debugfile调试函数的输出结果
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-18 16:27 | 显示全部楼层
代码结构往往还是需要借助调试看下,我们自己写代码也是会不断的调试来调整代码逻辑的。你可以先输出条件中的数值来跟踪下,你也可以根据你的策略逻辑,提供一个完整的简化版本,我们协助跟踪下。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-21 00:03 , Processed in 0.196619 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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