资源加载中... loading...

2.12 _D( ) 函数 与 时间戳

Author: 发明者量化-小小梦, Created: 2016-12-29 16:28:35, Updated: 2017-02-14 16:54:35

_D( ) 函数 与 时间戳


  • JS 时间戳

    在写策略的时候,不免会遇到使用时间戳的问题,在JS中 时间戳 是个毫秒级别的数字。 通常不是很直观,主要是用来在程序中判断时间先后顺序,计算时间差等等。 在DEBUG或者调试的时候很不方便。为此,平台内置了一个函数 : _D()函数,用来把时间戳显示为字符串便于使用。 同样有时候还需要把一个具体描述的时间转换为时间戳,那怎么处理呢?

    给出代码示例:

    function main(){
          // example TimeString to TimeStamp
          //timeStr format:  "2016.12.01 13:55:60";
          var stamp = new Date("2014-07-10 10:21:12:500").getTime();
          Log("stamp:", stamp,"_D(stamp)" ,_D(stamp) ,"srting : 2014-07-10 10:21:12");
      
          //timeStr format:  "2016.12.01 13:55:60:300";
          var stamp2 = new Date("2014-07-10 10:21:12").getTime();
          Log("stamp2:", stamp2,"_D(stamp)" ,_D(stamp2) ,"srting : 2014-07-10 10:21:12");
      
          var nowTimeStamp = new Date().getTime();
          var nowTimeStr = _D(nowTimeStamp);
          Log(new Date(nowTimeStr).getTime(), nowTimeStamp);
    }
    

    代码回测运行:

    img

  • Python 时间戳

    需要注意的是_D()函数在 Python 中用法是有些不一样的,我们也用代码测试一下。

    import time
    def main():
        # example TimeString to TimeStamp
        # timeStr format:  "2016.12.01 13:55:60";
    
        # time.mktime(tupletime)
        # 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。
      
        stamp = time.mktime((2014, 7, 10, 10, 21, 12, 5, 0, 0))
        Log("stamp:", stamp, "_D(stamp)", _D(stamp)," srting : 2014-07-10 10:21:12")
      
        stamp2 = time.mktime((2014, 7, 10, 10, 21, 12, 0, 0, 0))
        Log("stamp2:", stamp2, "_D(stamp)", _D(stamp2), "srting : 2014-07-10 10:21:12")
      
        nowTimeStamp = time.time()
        nowTimeStr = _D(nowTimeStamp)
        Log("nowTimeStamp:", nowTimeStamp, "nowTimeStr:", nowTimeStr)
    

    回测显示:

    img


More

super888 _D() 在 python平台上的时间单位是秒,和说明里的不一样。所以k线数据里的Time需要除以1000

发明者量化-小小梦 哦 ~是的 ,感谢提醒 ,我增加 对 python 的解释说明 ^^ , 不过 python 的策略中 使用 _D 传入 的参数 直接用 Python time.time() 返回的值就可以(秒级别的 时间戳), K线数据 中的时间戳是 毫秒级别的,需要在Python 策略中做 除以 1000 的转换,用于对比time.time() 返回的秒级时间戳。