Giter VIP home page Giter VIP logo

Comments (5)

mpquant avatar mpquant commented on June 5, 2024

感谢,不过还不够简练,近期研究后更新

from mytt.

qzhjiang avatar qzhjiang commented on June 5, 2024

上面的sumbars函数有错误,漏掉了一条语句。
A = np.flipud(A) # 倒转(第一版漏了)
在A为数组的情况下会出错。
现在更正过来了,请用这个正确的版本:

def sumbarsFast(X, A):
    # type: (np.ndarray, Optional[np.ndarray, float, int]) -> np.ndarray
    """
    通达信SumBars函数的Python实现
    SumBars函数将X向前累加,直到大于等于A, 返回这个区间的周期数。例如SUMBARS(VOL, CAPITAL),求完全换手的周期数。

    :param X: 数组。被累计的源数据。 源数组中不能有小于0的元素。
    :param A: 数组(一组)或者浮点数(一个)或者整数(一个),累加截止的界限数
    :return:  数组。各K线分别对应的周期数
    """
    if any(X<=0):
        raise ValueError('数组X的每个元素都必须大于0!')
    
    X = np.flipud(X)  # 倒转
    length = len(X)

    if isinstance(A * 1.0, float):  # 是单值
        A = np.repeat(A, length)  # 转化为数组
    A = np.flipud(A)  # 倒转(第一版漏了)
    
    sumbars = np.zeros(length)  # 初始化sumbars为0
    Sigma = np.insert(np.cumsum(X), 0, 0.0)  # 在累加值前面插入一个0.0(元素变多1个,便于引用)

    for i in range(length):
        k = np.searchsorted(Sigma[i + 1:], A[i] + Sigma[i])
        if k < length - i:  # 找到
            sumbars[length - i - 1] = k + 1

    return sumbars.astype(int)

from mytt.

yglpyn8888 avatar yglpyn8888 commented on June 5, 2024

感谢分享,我看两个函数里还有FOR循环 不是完全的向量化实现,请问速度如何?

from mytt.

qzhjiang avatar qzhjiang commented on June 5, 2024

感谢分享,我看两个函数里还有FOR循环 不是完全的向量化实现,请问速度如何?

是的,我的水平无法消灭这个循环,但速度还是很快的了。20W条记录,大概是784ms。

from mytt.

yglpyn8888 avatar yglpyn8888 commented on June 5, 2024

感谢分享,我看两个函数里还有FOR循环 不是完全的向量化实现,请问速度如何?

是的,我的水平无法消灭这个循环,但速度还是很快的了。20W条记录,大概是784ms。

OK, 这个速度是相当快的~ 比我想象中快多了

from mytt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.