Python TA库中布林带的正确使用

Python TA库中布林带的正确使用,python,ta-lib,technical-indicator,Python,Ta Lib,Technical Indicator,我正在尝试创建一个Matplotlib图,显示Poloniex交易所上加密货币对的布林带和价格图。当我获取BTC/ETH对的数据时,这些频带似乎起作用,但对于不太活跃的对(如BTC/BURST)则不起作用 下面是BTC/ETH的30分钟蜡烛图 这是一张BTC/BURST的30分钟蜡烛图 似乎正确计算了BTC/ETH对的标准偏差,并显示了频带,但BTC/突发对的标准偏差始终为零,因此频带绘制在10天SMA的顶部 这是我的密码 import API import numpy as np from

我正在尝试创建一个Matplotlib图,显示Poloniex交易所上加密货币对的布林带和价格图。当我获取BTC/ETH对的数据时,这些频带似乎起作用,但对于不太活跃的对(如BTC/BURST)则不起作用

下面是BTC/ETH的30分钟蜡烛图

这是一张BTC/BURST的30分钟蜡烛图

似乎正确计算了BTC/ETH对的标准偏差,并显示了频带,但BTC/突发对的标准偏差始终为零,因此频带绘制在10天SMA的顶部

这是我的密码

import API
import numpy as np
from talib.abstract import *
import matplotlib.pyplot as plt
from matplotlib.finance import candlestick2_ohlc
import time
from pprint import pprint

key = 'keyHere'
secret = 'secretHere'
api = API.poloniex(key, secret)

pair = "BTC_BURST"
interval = 1800  # 30 mins
steps = 336      # 1 week
startTime = int(time.time()) - steps * interval
stopTime = int(time.time())

print 'fetching', steps, 'candles from server'
fetchStart = time.time()
data = api.api_query('returnChartData', {"currencyPair": pair, "period": interval,
                                         "start": startTime, "end": stopTime})
print 'fetched', len(data['candleStick']), 'candles in', time.time() - fetchStart, 'seconds'
pprint(data)

inputs = {
    'open': np.empty(steps),
    'high': np.empty(steps),
    'low': np.empty(steps),
    'close': np.empty(steps),
    'volume': np.empty(steps)
}
for x in range(0, steps):
    candle = data['candleStick'][x]
    inputs['open'][x] = candle['open']
    inputs['high'][x] = candle['high']
    inputs['low'][x] = candle['low']
    inputs['close'][x] = candle['close']
    inputs['volume'][x] = candle['volume']
pprint(STDDEV(inputs, timeperiod=10, nbdev=2))

upper, middle, lower = BBANDS(inputs, timeperiod=10, nbdevup=2, nbdevdn=2)
# pprint(upper)
# pprint(middle)
# pprint(lower)

candlestick2_ohlc(plt.gca(), inputs['open'], inputs['high'],
                  inputs['low'], inputs['close'], width=0.8)
plt.plot(upper)
plt.plot(middle)
plt.plot(lower)
plt.show()

此问题是否是由于BTC/ETH对上存在更高的卷?任何帮助都是非常感谢的。

我不知道Python,并且用C++ TA LIB API工作。STDDEV和BBANDS都希望有一个double数组作为输入数据。例如,价格数组或收盘价或开盘价。不是ohlcv编码蜡烛的矩阵。我相信pythonapi包装器也是如此。所以我想知道您将什么作为输入数据传递给这些函数?Python包装器的文档说使用了一个包含双值numpy数组的字典,所以我认为这不是问题所在。我发现,如果我将数据值乘以几个数量级,波林带就会起作用。我的猜测是BTC/突发对的值太小,导致标准偏差四舍五入为零。我会继续挖掘,看看能不能找到解决办法。嘿@MatthewMohandiss你找到解决办法了吗?@borntohula我从来没有找到解决办法。我决定如果我使用一个转换因子(MTCC)来显示我原来的文章中所尝试的图表,我会更实际。我不知道Python,并且用C++ TA LIB API工作。STDDEV和BBANDS都希望有一个double数组作为输入数据。例如,价格数组或收盘价或开盘价。不是ohlcv编码蜡烛的矩阵。我相信pythonapi包装器也是如此。所以我想知道您将什么作为输入数据传递给这些函数?Python包装器的文档说使用了一个包含双值numpy数组的字典,所以我认为这不是问题所在。我发现,如果我将数据值乘以几个数量级,波林带就会起作用。我的猜测是BTC/突发对的值太小,导致标准偏差四舍五入为零。我会继续挖掘,看看能不能找到解决办法。嘿@MatthewMohandiss你找到解决办法了吗?@borntohula我从来没有找到解决办法。我决定,如果我在显示图表时使用转换因子(mBTC),就像我在原来的帖子中尝试的那样,这对我的应用程序来说会更实用。