Julia實現任意時間周期轉換,比如Tick轉5分鐘周期

在量化時, 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的開始, 需要自行確定
    • 在行情剛剛開始時, 通常是整點, 會滿足上述的新周期時間點的判定, 需要自行處理.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,893評論 0 5
  • 什么是愛情,在昨天之前我好像很懂,可是之后又變得很茫然…… 先講個故事吧,我是南方人,我的外婆是陜西人,在我6歲去...
    行云非夢閱讀 305評論 0 0
  • 夕陽西下時,飛機準點起飛,極速爬升后,翱翔于萬米高空。 憑窗遠眺,一條火紅的緞帶飄浮在天際,越...
    絲美天下閱讀 448評論 0 1
  • 不要總只看到牡丹,玫瑰,百合……^_^偶爾路邊的一朵小花,也有屬于它自己的美麗[愉快] ...
    轉個角拐個彎閱讀 521評論 4 17
  • 前幾天翻資治通鑒,說武則天當政期間,有那么一陣兒禁止殺生。 而老臣張德,家里剛生個大胖小子,一群人大眼睛盯著他看,...
    重慶理工大學閱讀 260評論 0 0