美文网首页
技术指标-KDJ

技术指标-KDJ

作者: 昵称违法 | 来源:发表于2020-08-30 18:14 被阅读0次

一、通达信中KDJ的计算方法

通达信软件中的KDJ计算方式

二、LLV()、HHV()函数

通达信LLV,HHV函数与talib中的MIN,MAX的区别
根据原来官方文档,LLV和HHV函数在计算的时候,如果当前的移动窗口数据量不足N的时候,有几个取几个
而,ta.MIN和ta.MAX在计算的时候,当窗口数量不足N的时候,返回空值

#通达信版本LLV
function LLV(price,n)
    ary = ta.MIN(price,n)        
    #[1~n-1]前面的空值处理
    for i in 1:n-1
        ary[i] = minimum(@view price[1:i])
    end
    return ary
end

#通达信版本HHV
function HHV(price,n)
    ary = ta.MAX(price,n)        
    #[1~n-1]前面的空值处理
    for i in 1:n-1
        ary[i] = maximum(@view price[1:i])
    end
    return ary
end

function test()
    df = DataFrame()
    df.close = rand(30)
    df.min5 = ta.MIN(df.close,5) #talib版本的LLV    
    df.LLV5 = LLV(df.close,5)
    df.max5 = ta.MAX(df.close,5) #talib版本的HHV        
    df.HHV5 = HHV(df.close,5)
    df |> display    
end
test()

计算结果


talib和通达信HHV,LLV的区别

三、KDJ的计算(完整代码)

3.1 ====函数定义====

#通达信版本的LLV
function LLV(price,n)
    ary = ta.MIN(price,n)        
    #[1~n-1]前面的空值处理
    for i in 1:n-1
        ary[i] = minimum(@view price[1:i])
    end
    return ary
end

#通达信版本的HHV
function HHV(price,n)
    ary = ta.MAX(price,n)        
    #[1~n-1]前面的空值处理
    for i in 1:n-1
        ary[i] = maximum(@view price[1:i])
    end
    return ary
end

# 通达信版本的SMA函数
function SMA(X::Array{Float64,1},N::Int64,M::Int64)
    Y::Float64 = 0.0
    res = Array{Float64,1}(undef,length(X))
    for (i,x) in zip(1:length(X),X)
        Y = (M * x + (N-M) * Y) / N
        res[i] = Y
    end
    return res
end

#计算KDJ指标
function KDJ(CLOSE,LOW,HIGH;N=9,M1=3,M2=3) #注意分号
    RSV = (CLOSE .- LLV(LOW,N)) ./ (HHV(HIGH,N) .- LLV(LOW,N)) .* 100
    K = SMA(RSV,M1,1)
    D = SMA(K,M2,1)
    J = @.begin 3 * K - 2 * D end

    return(K=K,D=D,J=J)
end

3.2 ====读取k线计算指标====

function test()
    df = DataFrame(XLSX.readtable("D:/300589.xlsx", "300589")...)
    df |> names |> println
    col = [:day,:open,:high,:low,:close,:vol,:K1,:D1,:J1]
    rename!(df,col)

    df.day = df.day .|> day-> begin 
        replace(day,"/"=>"-") |>
        day -> replace(day," "=>"") |>
        Date
    end
   
    df.open = df.open .|> float
    df.high = df.high .|> float
    df.low = df.low .|> float
    df.close = df.close .|> float
    df.K1 = df.K1 .|> float
    df.D1 = df.D1 .|> float
    df.J1 = df.J1 .|> float    
    df |> display
            
    CLOSE = df.close
    LOW = df.low
    HIGH = df.high
    
    "======" |> display
    kdj = KDJ(CLOSE,LOW,HIGH)  #,N=9,M1=3,M2=3
    df.K = kdj.K
    df.D = kdj.D
    df.J = kdj.J
    
    df |> names |> println
    df |> display
    CSV.write("D:/D.csv",df)    
    df
end

计算的结果【(1)是通达信计算的数据,(2)是Julia计算的数据】

kdj计算结果

3.3 原有kdj和新计算的kdj进行画图对比

using Plots
gr()
function draw(df)
    df = @linq df |> where(Date("2017-01-15") .< :day .< Date("2017-06-01"))   

    x = df.day    
    plot(x,[df.K1,df.J1,df.D1])  #原有的KDJ数据   
    plot!(x,[df.K,df.J,df.D])    #新计算的KDJ数据  
end
draw(df)

3.4 对比的结果【第一部分计算有差别,第二部分没有差别,后期需要复勘】

画图对比结果

相关文章

  • KDJ随机指标

    KDJ随机指标 1、KDJ介绍? KDJ是币圈市场非常重要的技术指标,它主要应用于短线行情,对分析中、长线行情 走...

  • 技术指标KDJ

    股市投资之路,没有技术是万万不行的。技术指标不是万能的,但不会技术指标是万万不行的。要认识技术分析的重要性,虽基本...

  • 技术指标-KDJ

    一、通达信中KDJ的计算方法 二、LLV()、HHV()函数 通达信LLV,HHV函数与talib中的MIN,MA...

  • 技术指标与仓位控制

    本文是天宇听鳄鱼汇直播的听课笔记 1 关于技术指标 KDJ,MACD,RSI,三个技术技术指标 1.1 短线之王 ...

  • KDJ技术指标分析

    随机指标(KDJ)是以最高价、最低价及收盘价为基本数据进行计算,得出的K值、D值和J值分别在指标的坐标上形成的一个...

  • 阳光透盘:最全的MACD指标和KDJ指标详解

    一、技术指标概述 二、MACD指标的计算 三、KDJ指标的计算及与股价的对应关系

  • 常用指标 KDJ战法解析

    KDJ技术指标简介随机指标KDJ一般是用于股票分析的统计体系,它是什么样的呢?我们还是从图形上认识一下...

  • 几个常用的技术指标之K线

    在正式分析之前,希望大家认识几个常用的技术指标,比如说K线,MACD指标,布林带,成交量,KDJ指标等等。我自己常...

  • 警惕!常用指标误判陷阱

    说起技术分析,投资者最熟悉的莫过于KDJ、MACD、RSI等常见的技术指标了。许多初级股市技术教课书甚至把这些指标...

  • 技术指标】如何应对KDJ指标钝化

    技术指标 KDJ指标是在WMS指标的基础上发展而来,他们具有WMS指标的一些特征。其中K值是对“当日收盘价在过去一...

网友评论

      本文标题:技术指标-KDJ

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