代码之家  ›  专栏  ›  技术社区  ›  Kamikaze_goldfish

Python-在函数中遇到TypeError

  •  -4
  • Kamikaze_goldfish  · 技术社区  · 7 年前

    我一直在找工作 TypeError 当我运行这个脚本时。我不明白为什么。我在youtube上看了这个系列,一直在按照他在每节课上键入的代码进行操作,但当我运行它时,会弹出一个错误, print('Predicited Outcome: ', performanceAr(patDex)) TypeError: 'list' object is not callable

    import numpy as np
    import matplotlib
    # matplotlib.use('TkAgg')
    import matplotlib.pyplot as plt
    import matplotlib.ticker as mticker
    import matplotlib.dates as mdates
    import time
    #Watch sentdex python charting tutorial
    
    date,bid,ask = np.loadtxt('GBPUSD1d.txt', unpack=True
                                  , delimiter=',',
                                  converters={0:mdates.strpdate2num('%Y%m%d%H%M%S')})
    #Global
    avgLine = ((bid+ask)/2)
    
    patForRec = []
    patterAr = []
    performanceAr = []
    
    totalStart = time.time()
    
    def percentChange(startPoint, currentPoint):
        return ((float(currentPoint)-startPoint)/abs(startPoint))*100.00
    
    
    def patternStorage():
        patStartTime = time.time()
        x = len(avgLine) - 30
        y = 11
        while y < x:
            pattern = []
            p1 = percentChange(avgLine[y-10], avgLine[y-9])
            p2 = percentChange(avgLine[y-10], avgLine[y-8])
            p3 = percentChange(avgLine[y-10], avgLine[y-7])
            p4 = percentChange(avgLine[y-10], avgLine[y-6])
            p5 = percentChange(avgLine[y-10], avgLine[y-5])
            p6 = percentChange(avgLine[y-10], avgLine[y-4])
            p7 = percentChange(avgLine[y-10], avgLine[y-3])
            p8 = percentChange(avgLine[y-10], avgLine[y-2])
            p9 = percentChange(avgLine[y-10], avgLine[y-1])
            p10 = percentChange(avgLine[y-10], avgLine[y])
    
            outcomeRange = avgLine[y+20:y+30]
            currentPoint = avgLine[y]
    
            try:
                avgOutcome = reduce(lambda x, y: x+y, outcomeRange) / len(outcomeRange)
            except Exception(e):
                print(str(e))
                avgOutcome=0
    
            futureOutcome = percentChange(currentPoint, avgOutcome)
            pattern.append(p1)
            pattern.append(p2)
            pattern.append(p3)
            pattern.append(p4)
            pattern.append(p5)
            pattern.append(p6)
            pattern.append(p7)
            pattern.append(p8)
            pattern.append(p9)
            pattern.append(p10)
    
            patterAr.append(pattern)
            performanceAr.append(futureOutcome)
    
            # Dont need to print
            # print(currentPoint)
            # print(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
            y+=1
        patEndTime = time.time()
        print(len(patterAr))
        print(len(performanceAr))
        print(patEndTime-patStartTime)
    
    
    def currentPattern():
    
    
    
        cp1 = percentChange(avgLine[-11], avgLine[-10])
        cp2 = percentChange(avgLine[-11], avgLine[-9])
        cp3 = percentChange(avgLine[-11], avgLine[-8])
        cp4 = percentChange(avgLine[-11], avgLine[-7])
        cp5 = percentChange(avgLine[-11], avgLine[-6])
        cp6 = percentChange(avgLine[-11], avgLine[-5])
        cp7 = percentChange(avgLine[-11], avgLine[-4])
        cp8 = percentChange(avgLine[-11], avgLine[-3])
        cp9 = percentChange(avgLine[-11], avgLine[-2])
        cp10 = percentChange(avgLine[-11], avgLine[-1])
    
        patForRec.append(cp1)
        patForRec.append(cp2)
        patForRec.append(cp3)
        patForRec.append(cp4)
        patForRec.append(cp5)
        patForRec.append(cp6)
        patForRec.append(cp7)
        patForRec.append(cp8)
        patForRec.append(cp9)
        patForRec.append(cp10)
        print(patForRec)
    
    
    def patternRecognition():
        for eachPattern in patterAr:
            sim1 = 100.00 - abs(percentChange(eachPattern[0], patForRec[0]))
            sim2 = 100.00 - abs(percentChange(eachPattern[1], patForRec[1]))
            sim3 = 100.00 - abs(percentChange(eachPattern[2], patForRec[2]))
            sim4 = 100.00 - abs(percentChange(eachPattern[3], patForRec[3]))
            sim5 = 100.00 - abs(percentChange(eachPattern[4], patForRec[4]))
            sim6 = 100.00 - abs(percentChange(eachPattern[5], patForRec[5]))
            sim7 = 100.00 - abs(percentChange(eachPattern[6], patForRec[6]))
            sim8 = 100.00 - abs(percentChange(eachPattern[7], patForRec[7]))
            sim9 = 100.00 - abs(percentChange(eachPattern[8], patForRec[8]))
            sim10 = 100.00 - abs(percentChange(eachPattern[9], patForRec[9]))
    
            howSim = (sim1+sim2+sim3+sim4+sim5+sim6+sim7+sim8+sim9+sim10)/10.00
    
            if howSim > 70:
                patDex = patterAr.index(eachPattern)
                print('#################')
                print('#################')
                print(patForRec)
                print('=================')
                print('=================')
                print(eachPattern)
                print('-----------------')
                print('-----------------')
                print('Predicted Outcome: ', performanceAr(patDex))
                print('#################')
                print('#################')
    
    
    
    
    def graphRawFX():
    
        fig = plt.figure(figsize=(10,7))
        ax1 = plt.subplot2grid((40,40), (0,0), rowspan=40, colspan=40)
    
        ax1.plot(date,bid)
        ax1.plot(date,ask)
        plt.gca().get_yaxis().get_major_formatter().set_useOffset(False)
    
        ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d- %H:%M:%S'))
        for label in ax1.xaxis.get_ticklabels():
            label.set_rotation(45)
    
        ax1_2 = ax1.twinx()
        ax1_2.fill_between(date, 0, (ask-bid), facecolor='g', alpha=.3 )
    
        plt.subplots_adjust(bottom=.23)
        plt.grid(True)
        plt.show()
    
    patternStorage()
    currentPattern()
    patternRecognition()
    totalTime = time.time() - totalStart
    print('Processing Time Took: ', totalTime,' seconds')
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   UtahJarhead    7 年前

    您正在指定 () 具有 performanceAr

    print('Predicted Outcome: ', performanceAr(patDex))
    

    也许你想要这个

    print('Predicted Outcome: ', performanceAr[patDex])
    

    [] 而不是 () )