欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 常数函数的bug

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3845人关注过本帖树形打印复制链接

主题:常数函数的bug

帅哥哟,离线,有人找我吗?
dwjgwsm
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
常数函数的bug  发帖心情 Post By:2017/8/10 11:14:18 [显示全部帖子]

逐K线模式,仅刷最后一根K线

x1:CURRENTTIME,NODRAW;
text:=NUMTOSTR(date,0) & ' x1=' & NUMTOSTR(x1,0);
if STRCMP(code,'TA00')=0 and lastbar and range(CURRENTTIME,085959,090300) then
begin
  for i=0 to 3 do
    BEGIN
      DEBUGFILE('c:\Records.txt',text[barpos-i] & ' c=%.0f',c);
    end
end

记录结果:
2017-08-10 09:00:44.859    1170810 x1=90037 c=5310
2017-08-10 09:00:44.859    1170809 x1=90037 c=5310
2017-08-10 09:00:44.859    1170808 x1=90037 c=5310
2017-08-10 09:00:44.859    1170807 x1=90037 c=5310
2017-08-10 09:02:01.609    1170810 x1=90201 c=5312
2017-08-10 09:02:01.609    1170809 x1=90037 c=5312  //90037这个时间是当根K线第一次运行的时间,也就是说currenttime函数在历史K线上被始终定格为第一遍运行的时间
2017-08-10 09:02:01.609    1170808 x1=90037 c=5312
2017-08-10 09:02:01.609    1170807 x1=90037 c=5312


这带来的问题就是,如果在语句中使用了常数函数,比如currenttime函数,若有如下语句 cont:=aa and not(range(currenttime,90000,90100)),假如有一根K线,其cont在90100之后条件成立,当该K线成为历史K线之后,cont的值将始终定格在90000~90100期间的运算结果(因为第一遍运行是在此期间完成的),也就是cont将始终不成立

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 11:37:12 [显示全部帖子]

lastbar:=islastbar;

我是后台策略引用图表策略,上述代码放在图表策略中

直接加载图表策略到k线图表中好像是没这个问题,我待会儿再测试一下

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 11:40:23 [显示全部帖子]

这个值是这样的:最新K之前的那个K最后一次刷新时产生的currenttime值。

确实是这样的!我的测试中图表策略设置的是仅刷最后一根k线,但这样确实会存在我一楼后面说的问题

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 11:42:26 [显示全部帖子]

是不是所有的常数函数都是这样的机制?

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 11:45:03 [显示全部帖子]

这样的机制导致常数函数在运用历史k线时很容易出错!和编程者的通常理解不一致、这样设计真的好么?

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 11:47:46 [显示全部帖子]

确实得注意常数函数的理解和使用了

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2017/8/10 12:09:27 [显示全部帖子]

 明白了,由于历史K线仅刷一遍,所以, 即使是常数函数也会定格为刷那一遍的时候的值.

 回到顶部