Я хочу выяснить ошибку - TypeError: объект 'builtin_function_or_method' не подлежит подписке - PullRequest
0 голосов

Добрый день.

Объявлена ​​функция индикатора ADX (ссылка Python: Расчет системы направленного движения среднего индекса (ADX) 2 - https://www.youtube.com/watch?v=joOWm-GcHTw).

Произошла ошибка во время работы - «TypeError: 'builtin_function_or_method' object is not subscriptable».

в этой строке - TRDate, TrueRange = TR (date [x], closep [x], highp [x] , lowp [x], openp [x], closep [x-1]) TypeError: объект 'builtin_function_or_method' не может быть подписан

Я буду рад любой помощи. Спасибо. Код ниже.

def TR(d,c,h,l,o,yc):
    x = h-l
    y = abs(h-yc)
    z = abs(l-yc)


    if y <= x >= z:
        TR = x
    elif x <= y >= z:
        TR = y
    elif x <= z >= y:
        TR = z
    return d, TR



def DM(d,o,h,l,c,yo,yh,yl,yc):
    moveUp = h-yh
    moveDown = yl-l

    if 0 < moveUp > moveDown:
        PDM = moveUp
    else:
        PDM = 0

    if 0 < moveDown > moveUp:
        NDM = moveDown
    else:
        NDM = 0
    return d,PDM,NDM

def calcDIs(date,openp,highp,lowp,closep,openpy,highpy,lowpy,closepy,tf):
    x = 1
    TRDates = []
    TrueRanges = []
    PosDMs = []
    NegDMs = []

    while x < len(date):
        TRDate,TrueRange = TR(date[x],closep[x],highp[x],lowp[x],openp[x],closep[x-1]) << error
        TRDates.append(TRDate)
        TrueRanges.append(TrueRange)

        DMdate,PosDM,NegDM = DM(date[x],openp[x],highp[x],lowp[x],closep[x],openp[x-1],highp[x-1],lowp[-1],closep[x-1]) << I assume that there will be the same error
        PosDMs.append(PosDM)
        NegDMs.append(NegDM)

        x +=1



    expPosDM = ExpMovingAverage(PosDMs,14)
    expNegDM = ExpMovingAverage(NegDMs,14)
    ATR = ExpMovingAverage(TrueRanges,14)


    xx = 0
    PDIs = []
    NDIs = []


    while xx < len(ATR):
        PDI = 100*(expPosDM[xx]/ATR[xx])
        PDIs.append(PDI)


        NDI = 100*(expNegDM[xx]/ATR[xx])
        NDIs.append(NDI)

        xx +=1


    return PDIs,NDIs

Ответы [ 3 ]

0 голосов
/ 29 мая 2020

Можете ли вы показать все свои операторы импорта?

Также вы можете изменить свою date переменную на что-то другое?

0 голосов

Добрый день. Сделал как было предложено. Не помогло.

def calcDIs(cur_date,openp,highp,lowp,closep,openpy,highpy,lowpy,closepy,tf):
    x = 1
    TRDates = []
    TrueRanges = []
    PosDMs = []
    NegDMs = []

    while x < len(cur_date):
        TRDate,TrueRange = TR(cur_date[x],closep[x],highp[x],lowp[x],openp[x],closep[x-1])

Все та же ошибка. TRDate, TrueRange = TR (cur_date [x], closep [x], highp [x], lowp [x], openp [x], closep [x-1]) TypeError: объект 'builtin_function_or_method' не имеет индексации

0 голосов

Извините, я не вставил последнюю часть кода.

def ADX(date,openp,highp,lowp,closep,openpy,highpy,lowpy,closepy,tf,tfy):
    PositiveDI,NegativeDI = calcDIs(date,openp,highp,lowp,closep,openpy,highpy,lowpy,closepy,tf)


    xxx = 0
    DXs =[]

    while xxx < len(date[1:]):
        DX = 100*( (abs(PositiveDI[xxx]-NegativeDI[xxx])
                    /(PositiveDI[xxx]+NegativeDI[xxx])))


        DXs.append(DX)

        xxx += 1


    ADX = ExpMovingAverage(DXs,14)

    return PositiveDI, NegativeDI, ADX

И соответственно звонок:

PositiveDI, NegativeDI, ADX = ta.ADX(data,open,high,low,closes,open,high,low,closes,14,14)

например: [[1499040000000, // данные «0,01634790», // Открыть «0,80000000», // Максимум «0,01575800», / / Минимум «0,01577100», // Закрытие «148976.11427815», // Объем 1499644799999, // Время закрытия «2434.19055334», // Валюта квоты 308, // Количество сделок «1756.87402397», // Объем базового актива на покупку Тейкером «28,46694368 ", // Тейкер покупает объем актива котировки" 17928899.62484339 "// Игнорировать]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...