美文网首页
julia-计算k线的【相对强弱指标RSI】

julia-计算k线的【相对强弱指标RSI】

作者: 昵称违法 | 来源:发表于2020-12-31 16:03 被阅读0次

一、RSI指标介绍

相对强弱指标RSI 是由韦尔斯.怀尔德(Welles Wilder)提出的,是衡量证券自身内在相对强度的指标。 RSI指标是韦尔斯.怀尔德首创的,发表在他的《技术交易系统新思路》一书中。(1978年版)

相对强弱指数RSI是根据一定时期内上涨和下跌幅度之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。

二、原理

相对强弱指标RSI是用以计测市场供需关系和买卖力道的方法及指标。

计算公式:

N日RSI =N日内收盘涨幅的平均值/(N日内收盘涨幅均值+N日内收盘跌幅均值) ×100

由上面算式可知RSI指标的技术含义,即以向上的力量与向下的力量进行比较,若向上的力量较大,则计算出来的指标上升;若向下的力量较大,则指标下降,由此测算出市场走势的强弱。

三、计算公式

image.png
LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100;

四、julia计算代码

函数的定义


"""
功能:通达信版本的SMA函数
SMA(X,N,M) 求X的N个周期内的扩展指数加权移动平均。M为权重。
输出:Array{Float64,1}
"""
function SMA(X::Array, N::Int64, M::Int64)
    res = Array{Float64,1}(undef, length(X))
    Y::Float64 = 0.0

    #第一初始值
    res[1] = X[1]
    Y = X[1]

    #第二个值到结束的计算
    for (i, x) in zip(2:length(X), X[2:end])  #从第二个开始处理
        Y = (M * x + (N - M) * Y) / N
        res[i] = Y
    end
    return res
end

"""
引用ary在N个周期前的值,本初相当于shift的功能
N取值范围:下界:1 上界:lengh(myary) - 1
第一个元素,没有前面的值,返回missing

====测试代码====
ary1 = [1,2,3,4,5,6,7,8,9,10]
ary2 = ["1","2","3","4","5"]
REF(ary1,1) |> println
REF(ary2,-1) |> println
REF(ary2,11) |> println
"""
function REF(myary::Array{Any},n::Int)
    if (n <= 0)|(n > length(myary) - 1 )
        throw("n的值应该大于0,且小于$(length(myary))")
    end

    result = Array{Any,1}(undef, length(myary)) #适用多种类型
    for i in 1:length(myary)
        if 1 <= i-n <= length(myary)            #第二个到最后一个元素
            result[i] = myary[i-n]
        else                                    #第一个元素
            #result[i] = missing
            result[i] = myary[1]
        end
    end
    return result
end


"""
取最大值,MAX(A,B),取A、B中较大者,如果A=B返回A or B
注意,该函数A为数组,B为float数值

====测试代码====
MAX([1,2,3,34,4,missing] , 5.0)
MAX([1,2,3,34,4.0] , 5.0)
MAX([1,2,2,3,3,7,6],4.0)
MAX([1,2,2,3,3,7,6],4)
"""
function MAX(ary::Array, n::Number)
    ary .|> item -> begin
        if ismissing(item)
            NaN
        elseif isnan(item)
            NaN
        else
            if item >= n
                item
            else
                n
            end
        end
    end
end


"""
相对强弱指标:RSI

计算方式参照:通达信软件 RSI指标计算方法
LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100;
默认参数:N1 = 6,  N2 = 12,  N3 = 24

"""
function RSI(CLOSE,N1,N2,N3)
    ABS = abs

    LC=REF(CLOSE,1)
    RSI1=SMA(MAX(CLOSE .- LC,0),N1,1)./SMA(ABS.(CLOSE.-LC),N1,1)*100
    RSI2=SMA(MAX(CLOSE .- LC,0),N2,1)./SMA(ABS.(CLOSE.-LC),N2,1)*100
    RSI3=SMA(MAX(CLOSE .- LC,0),N3,1)./SMA(ABS.(CLOSE.-LC),N3,1)*100
    return(RSI1 = RSI1,RSI2 = RSI2,RSI3 = RSI3)
end

五、测试

file = "D:/回测集成/通达信导出的k线/603019RSI指标验证.xlsx"
sheet = "603019"
df = DataFrame(XLSX.readtable(file,sheet)...)

N1 = 6
N2 = 12
N3 = 24
CLOSE = df.收盘
res = RSI(df.收盘,N1,N2,N3)
res.RSI1 .|> println
res.RSI2 .|> println
res.RSI3 .|> println

df.rs1新  = res.RSI1
df.rs2新  = res.RSI2
df.rs3新  = res.RSI3
CSV.write("data/ris.csv",df)

六、结果观察

说明:列RSI.RSI1,RSI.RSI1,RSI.RSI1 为通达信软件自己计算的的rsi指标,rs1新,rs2新,rs3新,为jualia函数计算的指标,根据对比,完全吻合。

image.png

七、改进

数据量大的话,用并行计算。

相关文章

  • julia-计算k线的【相对强弱指标RSI】

    一、RSI指标介绍 相对强弱指标RSI 是由韦尔斯.怀尔德(Welles Wilder)提出的,是衡量证券自身内在...

  • 指标运用系列《四》

    系列之四:RSI指标(相对强弱指标) 相对强弱指数(RSI)是通过分析市场买卖盘的意向和实力,从而确认未来市场走...

  • K线解析之交易 | RSI买入定式

    RSI被称为相对强弱指标,属于震荡指标;应用方法同移动平均线MACD等指标有很多相似之处。 RSI数值在50以下为...

  • ​RSI相对强弱指标

    1、什么是相对强弱指标? RSI简单的说就是从一定期间的商品价位变动关系去推测其未来价位变动的方向,是一 个中期指...

  • RSI买入定式

    原创:杏仁sister区块链杏仁社区 RSI被称为相对强弱指标,属于震荡指标,应用方法同移动平均线MACD等指标有...

  • 交易所K线相应指标计算

    K线相应指标计算 1.RSI指标计算方法 A=N日内收盘价的正数之和 B=N日内收盘价的负数之和*(-1) RSI...

  • 相对强弱指标RSI分析

    相对强弱指标(Relative Strength Index): 研判技巧: RSI 目前已为市场普遍使用,是主要...

  • 指标

    RSI 相对强弱指标 对振荡性技术指标的科学理解应当是:上升趋势时,当 RSI 进入超买,预示行情进入主升趋势,市...

  • RSI指标基础教学

    RSI RSI也叫相对强弱指标,一开始RSI被用于期货交易,后来被引入股市,再后来慢慢推广至其他金融产品中。 RS...

  • 币圈技术入门(4):三言两语说清RSI指标使用方法

    相对强弱指标(Relative Strength Index)是我们在各类二级市场中常说的RSI指标的中文名称。它...

网友评论

      本文标题:julia-计算k线的【相对强弱指标RSI】

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