zoukankan      html  css  js  c++  java
  • 计算OBV(On-Balance Volume,净额成交量或叫能量潮指标)

    (1) 把BHP数据分别加载到收盘价和成交量的数组中:
    c, v=np.loadtxt('BHP.csv', delimiter=',', usecols=(6, 7), unpack=True)
    为了判断计算中成交量前的正负号,我们先使用diff函数计算收盘价的变化量。diff函数可以
    计算数组中两个连续元素的差值,并返回一个由这些差值组成的数组:
    change = np.diff(c)
    print "Change", change
    收盘价差值的计算结果如下:
    Change [ 1.92 -1.08 -1.26 0.63 -1.54 -0.28 0.25 -0.6 2.15 0.69 -1.33 1.16
    1.59 -0.26 -1.29 -0.13 -2.12 -3.91 1.28 -0.57 -2.07 -2.07 2.5 1.18
    -0.88 1.31 1.24 -0.59]


    (2) NumPy中的sign函数可以返回数组中每个元素的正负符号,数组元素为负时返回-1,为
    正时返回1,否则返回0。对change数组使用sign函数:
    signs = np.sign(change)
    print "Signs", signs
    change数组中各元素的正负符号如下所示:
    Signs [ 1. -1. -1. 1. -1. -1. 1. -1. 1. 1. -1. 1. 1. -1. -1. -1. -1. -1. -1. -1. -1.
    1. 1. 1. -1. 1. 1. -1.]
    另外,我们也可以使用piecewise函数来获取数组元素的正负。顾名思义,piecewise①函
    数可以分段给定取值。使用合适的返回值和对应的条件调用该函数:
    pieces = np.piecewise(change, [change < 0, change > 0], [-1, 1])
    print "Pieces", pieces
    再次输出数组元素的正负,结果如下:
    Pieces [ 1. -1. -1. 1. -1. -1. 1. -1. 1. 1. -1. 1. 1. -1. -1. -1. -1. -1. -1. -1. -1.
    1. 1. 1. -1. 1. 1. -1.]

    (3) OBV值的计算依赖于前一日的收盘价,所以在我们的例子中无法计算首日的OBV值:
    print "On balance volume", v[1:] * signs
    计算结果如下:
    [2620800. -2461300. -3270900. 2650200. -4667300. -5359800. 7768400.
    -4799100. 3448300. 4719800. -3898900. 3727700. 3379400. -2463900.
    -3590900. -3805000. -3271700. -5507800. 2996800. -3434800. -5008300.
    -7809799. 3947100. 3809700. 3098200. -3500200. 4285600. 3918800.
    -3632200.]

     1 import numpy as np
     2 c, v=np.loadtxt('BHP.csv', delimiter=',', usecols=(6, 7), unpack=True)
     3 change = np.diff(c)
     4 print "Change", change
     5 signs = np.sign(change)
     6 print "Signs", signs
     7 pieces = np.piecewise(change, [change < 0, change > 0], [-1, 1])
     8 print "Pieces", pieces
     9 print "Arrays equal?", np.array_equal(signs, pieces)
    10 print "On balance volume", v[1:] * signs

     文章来源:《Numpy学习指南》

  • 相关阅读:
    JavaScript常用设计模式
    js 判断l对象类型
    JavaScript编程(终极篇)
    微信小程序开发-滑动操作
    解决Jquery向页面append新元素之后事件的绑定问题
    C# list与数组互相转换
    C# “贝格尔”编排法
    C#数字格式化
    SQL从一个表查询数据插入/更新到另一个表
    全局唯一标识符 (GUID)
  • 原文地址:https://www.cnblogs.com/zhangshuwen/p/7017074.html
Copyright © 2011-2022 走看看