python类BBANDS的实例源码

talib_testcase.py 文件源码 项目:base_function 作者: Rockyzsu 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def boll():
    #??tushare??????
    df=ts.get_k_data('300580',start='2017-01-12',end='2017-05-26')
    #?????
    closed=df['close'].values

    upper,middle,lower=talib.BBANDS(closed,matype=talib.MA_Type.SMA)
    print upper,middle,lower
    plt.plot(upper)
    plt.plot(middle)
    plt.plot(lower)
    plt.grid()
    plt.show()
    diff1=upper-middle
    diff2=middle-lower
    print diff1
    print diff2
abcbase.py 文件源码 项目:zStock 作者: superxhy 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def BOLL_CN(close,timeperiod=20, nbdev=2, isDEV=False):
        stddev = nbdev
        if not isDEV:
            devfix =  np.sqrt(1.0*timeperiod/(timeperiod-1))
            stddev = nbdev * devfix
        bollUPPER, bollMIDDLE, bollLOWER = tl.BBANDS(
                    #close narray 
                    close, 
                    #time default 20
                    timeperiod=timeperiod,
                    # number of non-biased standard deviations from the mean
                    nbdevup=stddev,
                    nbdevdn=stddev,
                    # Moving average type: simple moving average here
                    matype=0)
        return bollUPPER, bollMIDDLE, bollLOWER

    #WR%
factor.py 文件源码 项目:quant 作者: yutiansut 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def Bollinger_Bands(security_list, timeperiod=5, nbdevup=2, nbdevdn=2):
    # ????????????
    if isinstance(security_list, str):
        security_list = [security_list]
    # ?? Bollinger Bands
    security_data = history(timeperiod * 2, '1d', 'close',
                            security_list, df=False, skip_paused=True)
    upperband = {}
    middleband = {}
    lowerband = {}
    for stock in security_list:
        upperband[stock], middleband[stock], lowerband[stock] = talib.BBANDS(
            security_data[stock], timeperiod, nbdevup, nbdevdn)
    return upperband, middleband, lowerband

# ?????
ctaLineBar.py 文件源码 项目:InplusTrader_Linux 作者: zhengwsh 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def __recountBoll(self):
        """????"""
        if self.inputBollLen < EMPTY_INT: return

        l = len(self.lineBar)

        if l < min(7, self.inputBollLen)+1:
            self.debugCtaLog(u'?????,??Bar?????{0}???Boll???{1}'.
                             format(len(self.lineBar), min(7, self.inputBollLen)+1))
            return

        if l < self.inputBollLen+2:
            bollLen = l-1
        else:
            bollLen = self.inputBollLen

        # ????????Bar
        listClose=[x.close for x in self.lineBar[-bollLen - 1:-1]]
        #
        upper, middle, lower = ta.BBANDS(numpy.array(listClose, dtype=float),
                                         timeperiod=bollLen, nbdevup=self.inputBollStdRate,
                                         nbdevdn=self.inputBollStdRate, matype=0)

        self.lineUpperBand.append(upper[-1])
        self.lineMiddleBand.append(middle[-1])
        self.lineLowerBand.append(lower[-1])


    # ----------------------------------------------------------------------
taLib_demo.py 文件源码 项目:base_function 作者: Rockyzsu 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def cycle_process(event):
    print(event.widget.get())
    cycle = event.widget.get()

    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    fig, axes = plt.subplots(2, 1, sharex=True)
    ax1, ax2 = axes[0], axes[1]
    axes[0].plot(close, 'rd-', markersize=3)
    axes[0].plot(upperband, 'y-')
    axes[0].plot(middleband, 'b-')
    axes[0].plot(lowerband, 'y-')
    axes[0].set_title(cycle, fontproperties="SimHei")

    if cycle == '??????——???????':
        real = ta.HT_DCPERIOD(close)
        axes[1].plot(real, 'r-')
    elif cycle == '??????,??????????':
        real = ta.HT_DCPHASE(close)
        axes[1].plot(real, 'r-')
    elif cycle == '??????——????':
        inphase, quadrature = ta.HT_PHASOR(close)
        axes[1].plot(inphase, 'r-')
        axes[1].plot(quadrature, 'g-')
    elif cycle == '??????——????':
        sine, leadsine = ta.HT_SINE(close)
        axes[1].plot(sine, 'r-')
        axes[1].plot(leadsine, 'g-')
    elif cycle == '??????——???????':
        integer = ta.HT_TRENDMODE(close)
        axes[1].plot(integer, 'r-')

    plt.show()


# ????
taLib_demo.py 文件源码 项目:base_function 作者: Rockyzsu 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def statistic_process(event):
    print(event.widget.get())
    statistic = event.widget.get()

    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    fig, axes = plt.subplots(2, 1, sharex=True)
    ax1, ax2 = axes[0], axes[1]
    axes[0].plot(close, 'rd-', markersize=3)
    axes[0].plot(upperband, 'y-')
    axes[0].plot(middleband, 'b-')
    axes[0].plot(lowerband, 'y-')
    axes[0].set_title(statistic, fontproperties="SimHei")

    if statistic == '????':
        real = ta.LINEARREG(close, timeperiod=14)
        axes[1].plot(real, 'r-')
    elif statistic == '??????':
        real = ta.LINEARREG_ANGLE(close, timeperiod=14)
        axes[1].plot(real, 'r-')
    elif statistic == '??????':
        real = ta.LINEARREG_INTERCEPT(close, timeperiod=14)
        axes[1].plot(real, 'r-')
    elif statistic == '??????':
        real = ta.LINEARREG_SLOPE(close, timeperiod=14)
        axes[1].plot(real, 'r-')
    elif statistic == '???':
        real = ta.STDDEV(close, timeperiod=5, nbdev=1)
        axes[1].plot(real, 'r-')
    elif statistic == '??????':
        real = ta.TSF(close, timeperiod=14)
        axes[1].plot(real, 'r-')
    elif statistic == '??':
        real = ta.VAR(close, timeperiod=5, nbdev=1)
        axes[1].plot(real, 'r-')

    plt.show()


# ????
taLib_demo.py 文件源码 项目:base_function 作者: Rockyzsu 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def math_operator_process(event):
    print(event.widget.get())
    math_operator = event.widget.get()

    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    fig, axes = plt.subplots(2, 1, sharex=True)
    ax1, ax2 = axes[0], axes[1]
    axes[0].plot(close, 'rd-', markersize=3)
    axes[0].plot(upperband, 'y-')
    axes[0].plot(middleband, 'b-')
    axes[0].plot(lowerband, 'y-')
    axes[0].set_title(math_operator, fontproperties="SimHei")


    if math_operator == '?????????':
        real = ta.MAX(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif math_operator == '????????????':
        integer = ta.MAXINDEX(close, timeperiod=30)
        axes[1].plot(integer, 'r-')
    elif math_operator == '?????????':
        real = ta.MIN(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif math_operator == '????????????':
        integer = ta.MININDEX(close, timeperiod=30)
        axes[1].plot(integer, 'r-')
    elif math_operator == '????????????':
        min, max = ta.MINMAX(close, timeperiod=30)
        axes[1].plot(min, 'r-')
        axes[1].plot(max, 'r-')
    elif math_operator == '???????????????':
        minidx, maxidx = ta.MINMAXINDEX(close, timeperiod=30)
        axes[1].plot(minidx, 'r-')
        axes[1].plot(maxidx, 'r-')
    elif math_operator == '??':
        real = ta.SUM(close, timeperiod=30)
        axes[1].plot(real, 'r-')

    plt.show()
test_technical.py 文件源码 项目:catalyst 作者: enigmampc 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def expected_bbands(self, window_length, k, closes):
        """Compute the expected data (without adjustments) for the given
        window, k, and closes array.

        This uses talib.BBANDS to generate the expected data.
        """
        lower_cols = []
        middle_cols = []
        upper_cols = []

        ndates, nassets = closes.shape

        for n in range(nassets):
            close_col = closes[:, n]
            if np.isnan(close_col).all():
                # ta-lib doesn't deal well with all nans.
                upper, middle, lower = [np.full(ndates, np.nan)] * 3
            else:
                upper, middle, lower = talib.BBANDS(
                    close_col,
                    window_length,
                    k,
                    k,
                )

            upper_cols.append(upper)
            middle_cols.append(middle)
            lower_cols.append(lower)

        # Stack all of our uppers, middles, lowers into three 2d arrays
        # whose columns are the sids. After that, slice off only the
        # rows we care about.
        where = np.s_[window_length - 1:]
        uppers = np.column_stack(upper_cols)[where]
        middles = np.column_stack(middle_cols)[where]
        lowers = np.column_stack(lower_cols)[where]
        return uppers, middles, lowers
ta.py 文件源码 项目:dash-technical-charting 作者: plotly 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def add_BBANDS(self, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0,
               types=['line_dashed_thin', 'line_dashed_thin'],
               colors=['tertiary', 'grey_strong'], **kwargs):
    """Bollinger Bands.

    Note that the first argument of types and colors refers to upper and lower
    bands while second argument refers to middle band. (Upper and lower are
    symmetrical arguments, hence only 2 needed.)

    """
    if not self.has_close:
        raise Exception()

    utils.kwargs_check(kwargs, VALID_TA_KWARGS)
    if 'kind' in kwargs:
        kwargs['type'] = kwargs['kind']
    if 'kinds' in kwargs:
        types = kwargs['type']

    if 'type' in kwargs:
        types = [kwargs['type']] * 2
    if 'color' in kwargs:
        colors = [kwargs['color']] * 2

    name = 'BBANDS({},{},{})'.format(str(timeperiod),
                                     str(nbdevup),
                                     str(nbdevdn))
    ubb = name + '[Upper]'
    bb = name
    lbb = name + '[Lower]'
    self.pri[ubb] = dict(type='line_' + types[0][5:],
                         color=colors[0])
    self.pri[bb] = dict(type='area_' + types[1][5:],
                        color=colors[1], fillcolor='fill')
    self.pri[lbb] = dict(type='area_' + types[0][5:],
                         color=colors[0], fillcolor='fill')
    (self.ind[ubb],
     self.ind[bb],
     self.ind[lbb]) = talib.BBANDS(self.df[self.cl].values,
                                   timeperiod, nbdevup, nbdevdn, matype)
common.py 文件源码 项目:quantdigger 作者: andyzsf 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def _boll(self, data, n):
        """ ??????????? """
        data = transform2ndarray(data)
        upper, middle, lower =  talib.BBANDS(data, n, 2, 2)
        return (upper, middle, lower)
indicators.py 文件源码 项目:gdax-trader 作者: mcardillo55 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def calculate_bbands(self, period_name, close):
        timeperiod = 20
        upperband_1, middleband_1, lowerband_1 = talib.BBANDS(close, timeperiod=timeperiod, nbdevup=1, nbdevdn=1, matype=0)

        self.current_indicators[period_name]['bband_upper_1'] = upperband_1[-1]
        self.current_indicators[period_name]['bband_lower_1'] = lowerband_1[-1]

        upperband_2, middleband_2, lowerband_2 = talib.BBANDS(close, timeperiod=timeperiod, nbdevup=2, nbdevdn=2, matype=0)

        self.current_indicators[period_name]['bband_upper_2'] = upperband_2[-1]
        self.current_indicators[period_name]['bband_lower_2'] = lowerband_2[-1]
stock.py 文件源码 项目:autoxd 作者: nessessary 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def BOLL(closes, matype=MA_Type.EMA):
    """???
    matype: ???????? ????????????? EMA??2??SMA?4?????????
    return upper, middle, lower"""
    closes = np.array(closes)
    return talib.BBANDS(closes, timeperiod=20, matype=matype)
PlottingData.py 文件源码 项目:BlackCoffee 作者: IMYin 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def bbands(df):
    if len(df) > 100:
        close = df.close.values
        upperband, middleband, lowerband = tl.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    return upperband, middleband, lowerband
Quota.py 文件源码 项目:BlackCoffee 作者: IMYin 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def get_bbands_info(df):
    """
    calculate bbands quotation.
    :param df:
    :return: close, upperband, middleband, lowerband
    """
    close = get_close_data(df)
    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    return pd.DataFrame({u'close': df.close[-view_days:],
                         u'upperband': upperband[-view_days:],
                         u'middleband': middleband[-view_days:],
                         u'lowerband': lowerband[-view_days:]})
buy_or_sale.py 文件源码 项目:DataAnalysis 作者: IMYin 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def get_bbands(sorted_data):
    close,high,low,ma5,ma10,ma20 = get_case_data(sorted_data)
    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    #??%b???????????
    operator = ''
#    score = 0
    index_b = (close[-1]-lowerband[-1]) / (upperband[-1]-lowerband[-1])
#    print "%b is : " + str(index_b)
    if index_b > 1:
        operator += 'S%'
#        score -= 10
    elif index_b <= 0 :
        operator += 'B%'
#        score += 10

    #??????????????
    up = upperband[-1] - upperband[-2]
    down = lowerband[-2] -lowerband[-1]
    if up > 0 and down > 0:
        if up > down:
            operator += 'BO'
        elif up < down:
            operator += 'SO'

    if ma5[-1] > ma10[-1] and ma10[-1] > ma20[-1]:
        if upperband[-1] < upperband[-2]:
            operator += 'S!'
    return (operator,index_b)
#initial the date
taLib_demo.py 文件源码 项目:base_function 作者: Rockyzsu 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def overlap_process(event):
    print(event.widget.get())
    overlap = event.widget.get()

    upperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
    fig, axes = plt.subplots(2, 1, sharex=True)
    ax1, ax2 = axes[0], axes[1]
    axes[0].plot(close, 'rd-', markersize=3)
    axes[0].plot(upperband, 'y-')
    axes[0].plot(middleband, 'b-')
    axes[0].plot(lowerband, 'y-')
    axes[0].set_title(overlap, fontproperties="SimHei")

    if overlap == u'???':
        pass
    elif overlap == u'????????':
        real = ta.DEMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'??????? ':
        real = ta.EMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'??????——?????':
        real = ta.HT_TRENDLINE(close)
        axes[1].plot(real, 'r-')
    elif overlap == u'???????????':
        real = ta.KAMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'?????':
        real = ta.MA(close, timeperiod=30, matype=0)
        axes[1].plot(real, 'r-')
    elif overlap == u'MESA???????':
        mama, fama = ta.MAMA(close, fastlimit=0, slowlimit=0)
        axes[1].plot(mama, 'r-')
        axes[1].plot(fama, 'g-')
    elif overlap == u'????????':
        real = ta.MAVP(close, periods, minperiod=2, maxperiod=30, matype=0)
        axes[1].plot(real, 'r-')
    elif overlap == u'???????':
        real = ta.SMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'????????(T3)':
        real = ta.T3(close, timeperiod=5, vfactor=0)
        axes[1].plot(real, 'r-')
    elif overlap == u'????????':
        real = ta.TEMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'?????? ':
        real = ta.TRIMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    elif overlap == u'???????':
        real = ta.WMA(close, timeperiod=30)
        axes[1].plot(real, 'r-')
    plt.show()

# ????


问题


面经


文章

微信
公众号

扫码关注公众号