美文网首页
k线的周线计算方法

k线的周线计算方法

作者: 昵称违法 | 来源:发表于2021-01-09 17:38 被阅读0次

1、周的选择:节假日除外的日历周,本周所有的交易日【最多5个交易日】
2、四个价格的计算方法:
open = 第一天的open
close = 最后一天的close
high = MAX(所有的high)
low = LOW(所有的low)

3、如何计算同一个周包含哪些日子?

Dates包里的week()函数

df = DataFrame(XLSX.readtable("data/周线计算核对/6005851.xlsx","600585")...)
df[!,"week"] = df.day .|> Date .|> week

注意,周是会跨越年度的,如下所示:

image.png

4、日线转成周线的代码【只处理lhlc】

计算结果:

image.png

打开软件看盘软件,核对计算结果:

image.png

附录:代码

module weekline

using Dates
using DataFrames
using DataFramesMeta
using CSV
using XLSX

include("common.jl")

df = DataFrame(XLSX.readtable("data/周线计算核对/6005851.xlsx","600585")...)
df[!,"week"] = df.day .|> Date .|> week

"""
日线的k线转成周线的k线
df:日线 dataframe
"""
function gen_weekly_kline(df):DataFrame
    last_week = -1
    start_idx = 1
    end_idx = 1
    kline_day = Date("1970-01-01") #周线的日期
    kline_df = DataFrame(day = [], open = [], close = [], high = [], low = [])
    for (idx, r) in zip(1:size(df, 1), eachrow(df))
        println("======")
        println(idx," ",r.day)
        println("r.week = $(r.week)")

        current_week = r.week
        if last_week != current_week  #新的一周
            end_idx = idx - 1
            if idx == 1
                #不执行统计
                #println("第一条记录!")
            elseif idx > 1
                println("start_idx = $(start_idx) ,end_idx = $(end_idx)")

                #执行统计
                #day = r.day
                open = df[start_idx, :open]
                close = df[end_idx, :close]
                high = df[start_idx:end_idx, :high] |> maximum
                low = df[start_idx:end_idx, :low] |> minimum
                push!(kline_df, [kline_day, open, close, high, low])
                println("kline_day = $(kline_day)")
            end
            start_idx = idx
            last_week = r.week
        end
        kline_day = r.day

        if idx == size(df,1) #最后一根日线的地方,需要生成一次周线
            println("start_idx = $(start_idx) ,end_idx = $(idx)")

            #执行统计
            day = r.day
            open = df[start_idx, :open]
            close = df[idx, :close]
            high = df[start_idx:idx, :high] |> maximum
            low = df[start_idx:idx, :low] |> minimum
            push!(kline_df, [day, open, close, high, low])
        end
    end
    return kline_df
end

weekly_kline = gen_weekly_kline(df)
save_as_xlsx("data/周线计算核对/6005853.xlsx",weekly_kline)
end

相关文章

网友评论

      本文标题:k线的周线计算方法

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