您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

VBA 日期计算Bug,怎么解决? [金字塔]

  • 咨询内容:

    VBA自定义函数

    Function CS03(Formula,dd,tt)
      
        CS03=0
        dim day
        day=dd+19000000

        CS03=day
    End Function

     

     

    PEL命令

    dd0:=DATE();
    tt:time(),NOAXIS;
    aa:=CS03(dd0,tt);


    msgout(1,NUMTOSTR(aa,0));

     

    消息显示(只计算20根K线,日k线)

    2016/10/16 00:24:15  20160908
    2016/10/16 00:24:15  20160912
    2016/10/16 00:24:15  20160912
    2016/10/16 00:24:15  20160914
    2016/10/16 00:24:15  20160920
    2016/10/16 00:24:15  20160920
    2016/10/16 00:24:15  20160920
    2016/10/16 00:24:15  20160922
    2016/10/16 00:24:15  20160924
    2016/10/16 00:24:15  20160926
    2016/10/16 00:24:15  20160928
    2016/10/16 00:24:15  20160928
    2016/10/16 00:24:15  20160928
    2016/10/16 00:24:15  20160930
    2016/10/16 00:24:15  20161010
    2016/10/16 00:24:15  20161012
    2016/10/16 00:24:15  20161012
    2016/10/16 00:24:15  20161012
    2016/10/16 00:24:15  20161014
    2016/10/16 00:24:15  20161016

     

    问题:没有单数的日期,只有偶数日期,为什么?

     

    不加19000000时,消息显示是正确的。

     

     

  • 金字塔客服: 不明白你的逻辑,为何要加1900000?

     

  • 用户回复:

    你以为我想加啊,这是你们程序的bug,取日期函数dd0:=DATE();比如日期2016-10-16返回值是1161016,

    但是VBA里有些函数又要用到“2016-10-16”,所以加19000000。

     

     

     

  • 网友回复:

    不管怎么样,我发现VBA的变量,数据大的计算就会出错,例如,1161017+19000000 显示结果20161016,什么原因?

     

  • 网友回复: msgbox 1161017+19000000  
    这样简单测试重现不了你说的问题,可能的原因是浮点数的精度造成的,你试试这样改进
     
    dim day
     day=CLng(dd)+19000000
    [此贴子已经被作者于2016-10-17 21:21:29编辑过]

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容