Python 调用talib函数时出现talib错误

Python 调用talib函数时出现talib错误,python,numpy,Python,Numpy,文件“SCTR.py”,第53行,在 ppoHist=ta.PPO(股票数据['Last'],12,26) TypeError:参数“real”的类型不正确(应为numpy.ndarray,got系列) 请检查这段代码,我上面提到的错误是编译后反映出来的。我现在完全不知道 from nsepy import get_history from datetime import date import pandas as pd import requests from io import BytesI

文件“SCTR.py”,第53行,在 ppoHist=ta.PPO(股票数据['Last'],12,26) TypeError:参数“real”的类型不正确(应为numpy.ndarray,got系列)

请检查这段代码,我上面提到的错误是编译后反映出来的。我现在完全不知道

from nsepy import get_history
from datetime import date
import pandas as pd
import requests
from io import BytesIO 
import certifi
from dateutil.relativedelta import relativedelta
#import numpy as np
#import matplotlib.pyplot as plt
import datetime
import numpy as np
import matplotlib.colors as colors
import matplotlib.finance as finance
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
import talib as ta
from talib import MA_Type

url1 = 'https://www1.nseindia.com/content/indices/ind_nifty_Alpha_Index.csv'
def datainpy(url):

    headers = { 'Accept' : '*/*',
                'User-Agent' : 'Mozilla/5.0',
                'Refers' : 'http://www.nseindia.com',
                'Connection' : 'keep-alive'
              }

    getContents = requests.get(url,headers=headers).content
    symbol_list=pd.read_csv(BytesIO(getContents))

    print(symbol_list.head())

    for eachSymbol in symbol_list['Symbol'][1:8]:
        stock = get_history(symbol = eachSymbol,
                            start = date(2016,3,20),
                            end = date(2016,3,30))
        stock.drop_duplicates(inplace=True)
        stock.drop(stock.columns[[0,1,2,7,8,10,11,12,13]], axis = 1, inplace = True)
        print (stock.head())
        print(stock.head())
        stock.index=pd.to_datetime(stock.index)
        #stock.to_csv('./HistoricalData//' + eachSymbol + '.csv' , date_format='%Y%m%d')
            return stock;



StockData=datainpy(url=url1)   
print(StockData.head())
type(StockData)
ppoHist=ta.PPO(StockData['Last'],12,26)
print(ppoHist.head())

我基本上想在一个csv中为“每个符号”生成SCTR(股票图表技术排名),即PPO、DMA(200)、RSI等。

看起来您正在将pandas
系列
对象传递给
ta.PPO
,但它需要一个numpy数组。试一试

ppoHist = ta.PPO(StockData['Last'].values, 12, 26)
(免责声明:我自己没有尝试过。我没有安装
talib
,我无法回答任何有关它的问题。)


我对输出有点困惑,但这就是这里要提到的。如果有,请提供更好的解决方案

你能告诉我如何找到ppo直方图的斜率吗?
from nsepy import get_history
from datetime import date
import pandas as pd
import requests
from io import BytesIO 
import certifi
from dateutil.relativedelta import relativedelta
#import numpy as np
#import matplotlib.pyplot as plt
import datetime
import numpy as np
import matplotlib.colors as colors
import matplotlib.finance as finance
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
import talib as ta
from talib import MA_Type

#Long-Term Indicators (weighting)

#  * Percent above/below 200-day EMA (30%)
#  * 125-Day Rate-of-Change (30%)

#Medium-Term Indicators (weighting)

#  * Percent above/below 50-day EMA (15%)
#  * 20-day Rate-of-Change (15%)

# Short-Term Indicators (weighting)

#  * 3-day slope of PPO-Histogram (5%)
#  * 14-day RSI (5%)

url1 = 'https://www1.nseindia.com/content/indices/ind_nifty_Alpha_Index.csv'
def datainpy(url):

    headers = { 'Accept' : '*/*',
                'User-Agent' : 'Mozilla/5.0',
                'Refers' : 'http://www.nseindia.com',
                'Connection' : 'keep-alive'
              }

    getContents = requests.get(url,headers=headers).content
    symbol_list=pd.read_csv(BytesIO(getContents))

    print(symbol_list.head())

    for eachSymbol in symbol_list['Symbol']:
        stock = get_history(symbol = eachSymbol,
                            start = date(2000,3,20),
                            end = date(2016,3,30))
        stock.drop_duplicates(inplace=True)
        stock.drop(stock.columns[[0,1,2,7,8,10,11,12,13]], axis = 1, inplace = True)
        print (stock.head())
        print(stock.head())
        stock.index=pd.to_datetime(stock.index)
        #stock.to_csv('./HistoricalData//' + eachSymbol + '.csv' , date_format='%Y%m%d')
            return stock;



StockData=datainpy(url=url1)   
print(StockData.head())
type(StockData)
np.set_printoptions(precision=3)

ppoHist=ta.PPO(StockData['Last'].values,12,26)

RSI14=ta.RSI(StockData['Last'].values,14)

DMA200=ta.SMA(StockData['Last'].values,200)

EMA50=ta.EMA(StockData['Last'].values,14)

ROC125=ta.ROC(StockData['Last'].values,125)

ROC20=ta.ROC(StockData['Last'].values,14)

weightPctDiffOfEMA50=(((StockData['Last'].values-EMA50)*100)/StockData['Last'].values)*15

weightPctDiffOfDMA200=(((StockData['Last'].values-DMA200)*100)/StockData['Last'].values)*30

weightROC125=ROC125*30

weightROC20=ROC20*15

weightRSI14=RSI14*5

weightppoHist=ppoHist*5
print(weightppoHist)
SCTR=(weightPctDiffOfDMA200+weightPctDiffOfEMA50+weightROC125+weightROC20+weightppoHist+weightRSI14)/100

print(SCTR)