如何将1minK线数据转换为3min K线?

BitMEX 100倍杠杆永续合约,注册BitMex请使用日本IP:比特币量化交易交流群:191896494  BitMEX/OKEX量化机器人  

JEX 全球领先的期权交易所

当我们分析比特币K线走势时,我们能够直接读取到的K线一般是1min,5min,15min,30min,1hour这种,如果我们需要其他周期的K线,那么需要我们自己进行转化,有时候即使交易所提供5min数据,我们也会直接通过1min等基础K线计算出5min的K线,这样可以减少对交易所服务器的请求次数,提高代码的效率,下面以1min转5min为例介绍一下,如何进行K线数据的转换:

timestampclosehighlowopenvolume
2017/11/1 0:006440.164586437.564571503847
2017/11/1 0:016425.46440.96420.16440.11755497
2017/11/1 0:026419.76425.36416.96425.42112786
2017/11/1 0:0364016419.76392.56419.73059138
2017/11/1 0:0464106412.1640064011724514
2017/11/1 0:056425.96425.96404.364102084222
2017/11/1 0:066424.564306424.46425.9589919
2017/11/1 0:0764126424.464126424.5897844
2017/11/1 0:0864016415.164016412575118
2017/11/1 0:0964126412640164011007341
2017/11/1 0:106412.9641364056412911109
2017/11/1 0:116416.56416.76412.96412.9333443
2017/11/1 0:126410.46416.66410.36416.5258638
2017/11/1 0:13641664166410.36410.4504926


对以上1min数据转换成3min的VBA代码如下

Sub min1to3min()
min1totalrows = Sheets("1min").Range("A1048576").End(xlUp).Row '1minK线总行数
k = 1
For i = 4 To min1totalrows
 
    If Minute(Sheets("1min").Cells(i, 1)) / 3 = Int(Minute(Sheets("1min").Cells(i, 1)) / 3) Then
    Sheets("3min").Cells(k, 1) = Format(Sheets("1min").Cells(i, 1), "yyyy/mm/dd hh:mm:ss") '计算时间''分钟是3的倍数
    '计算收盘价
    Sheets("3min").Cells(k, 2) = Sheets("1min").Cells(i, 2) '当前1min收盘价
    '计算最高价
    Sheets("3min").Cells(k, 3) = Application.Max(Sheets("1min").Range("c" & i & ":c" & i - 2)) '最近3跟1min最高价的最高价
    '计算最低价
    Sheets("3min").Cells(k, 4) = Application.Min(Sheets("1min").Range("d" & i & ":d" & i - 2))  '最近3跟1min最低的最低价
     '计算开盘价
    Sheets("3min").Cells(k, 5) = Sheets("1min").Cells(i - 2, 2) '往前两根K线的开盘价
    '计算成交量
    Sheets("3min").Cells(k, 6) = Application.Sum(Sheets("1min").Range("f" & i & ":f" & i - 2)) '最近3跟1min成交量总和
    k = k + 1
    End If

Next

End Sub




  admin   2019-3-25