美文网首页Julia T...
Julia实现任意时间周期转换,比如Tick转5分钟周期

Julia实现任意时间周期转换,比如Tick转5分钟周期

作者: 数据齿轮 | 来源:发表于2017-01-11 20:20 被阅读0次

在量化时, CTP是期货交易量化的开发平台, 但其提供的行情时tick级别的, 常需要进行转换.

而通过Julia实现时, 会很方便将tick序列转为任意周期(包括分钟,小时等)的Bar序列.

本方法的特点:

  • 目标序列周期任意
  • 源序列周期可任意, 但理应比目标周期小
  • 不需进行大量的临时序列和内存拷贝

本方法使用到一个Package: TimeFrames.

源数据序列应该是Array{T,1}类型, 其中的T可以是Float64,Int或其他数值类型. 假设源数据为如下的四项基本的浮点序列:

  src_length = 100
  # TODO: 该处为预先准备的src_length长度时间序列, 这里不提供有效数据
  src_time = Array{DateTime,1}()  
  src_open = rand(src_length)
  src_high = rand(src_length)
  src_low = rand(src_length)
  src_close = rand(src_length)

事实上, 这些可以是 DataFrames结构或者是TimeSeries结构的某列.

转换前, 先声明一个想转成的时间周期:

  using TimeFrames
  to_tf = Minute(5)   # 要源序列转成5分钟级别的
 # 或
 # to_tf = TimeFrame("5T")

再定义一个临时变量, 跟踪源数据窗口:

  cursor = [1 1]

好了, 可以开始转换了.

这里提供 批量 方式, 如果实时增量转换, 需稍微改动一下.

# 从头遍历源序列
for i = 1:src_length
  # 折算当前时间所属的目标周期的时间点
  dtf = apply(to_tf, src_time[i])  
  cursor[2] = i
  if dtf == src_time[i]  # 正好处于新周期的时间点
    bartime = Base.last(view(src_time, cursor[1]: cursor[2]))
    # 或
    # bartime = src_time[i]
    baropen = first(view(src_open, cursor[1]: cursor[2]))
    # 或
    # baropen = src_open[cursor[1]]
     barhigh = reduce(max, view(src_high, cursor[1]: cursor[2]) )
     barlow  = reduce(min, view(src_low, cursor[1]: cursor[2]) )
     barclose = Base.last(view(src_close cursor[1]: cursor[2]))
    # 或
    # barclose = src_open[cursor[2]]

    @show (bartime, baropen, barhigh, barlow, barclose)

    cursor[1] = cursor[2]+1
  end
end
  • 说明
    • 采用内嵌的view方法, 是建立了在源序列数据上的索引引用, 不用拷贝成临时数据再进行max,min等操作.
    • 有些细节, 比如恰好的时间点属于前一个bar的结束, 还是新bar的开始, 需要自行确定
    • 在行情刚刚开始时, 通常是整点, 会满足上述的新周期时间点的判定, 需要自行处理.

相关文章

  • Julia实现任意时间周期转换,比如Tick转5分钟周期

    在量化时, CTP是期货交易量化的开发平台, 但其提供的行情时tick级别的, 常需要进行转换. 而通过Julia...

  • 2.函数的周期性

    函数的周期性: 以为周期: 、、...都是周期性的。 若对于任意的和时有: 时, 则$f(x)为周期性函数。 函数...

  • 数字货币如何实现规模转换?

    数字货币如何实现规模转换 传统银行吸纳存款,可以实现资金的规模转换,周期转换和风险转换。传统银行能够做到这一点的技...

  • 离散时间正弦信号的周期性判别问题

    我们知道:对于任意的连续时间正弦信号,它都具有周期性且其最小正周期都是(是频率);而对于离散时间正弦信号,只有当(...

  • 5.1笔记

    1.认识行业的周期,阶段。 2.投资弱周期的成长行业,比如食品医药。 3.了解品牌的价值,护城河,还有转换成本并不...

  • 学习并实现react (4)

    实现生命周期 生命周期介绍 React 生命周期图 React 子组件在父组件下的生命周期流程 实现 compon...

  • 周期的起落

    很多人都知道周期这个概念,大部分时间都是运用在金融市场当中。比如货币周期,股市周期,房地产周期等。 但各位不知道有...

  • Golang定时任务实例讲解

    在程序中经常需要按照指定的周期(以毫秒计)来调用函数或计算表达式,也即实现定时任务,使用time包中Tick和Sl...

  • golang定时任务详解

    在程序中经常需要按照指定的周期(以毫秒计)来调用函数或计算表达式,也即实现定时任务,使用time包中Tick和Sl...

  • 塔罗牌与生命的周期。

    在塔罗牌的系统里包含了这样几个周期,四元素转换的周期,3位一体的周期 ,7音进位的周期。3和7组成的21进制的周期...

网友评论

    本文标题:Julia实现任意时间周期转换,比如Tick转5分钟周期

    本文链接:https://www.haomeiwen.com/subject/dibrbttx.html