我想找出错误-TypeError:“ builtin_function_or_method”对象不可下标

时间:2020-05-28 16:42:02

标签: python

下午好。

宣布了ADX指标功能 (链接Python:平均方向索引(ADX)2方向运动系统计算-https://www.youtube.com/watch?v=joOWm-GcHTw)。

操作期间发生错误-“ TypeError:'builtin_function_or_method'对象不可下标”。

在此行上- TRDate,TrueRange = TR(日期[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 :(得分: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” //忽略 ] ]

答案 1 :(得分:0)

可以显示所有导入语句吗?

您还可以将date变量更改为其他变量吗?

答案 2 :(得分: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”对象不可下标