我想找出错误类型错误:“内置函数或方法”对象不可下标

2024-09-27 00:15:12 发布

您现在位置:Python中文网/ 问答频道 /正文

下午好

宣布了ADX指示器功能 (链接Python:Average Directive Index(ADX)2定向运动系统计算-https://www.youtube.com/watch?v=joOWm-GcHTw

操作过程中出现错误-“TypeError:“内置函数”或“方法”对象不可下标”

在这条线上— TRDate,TrueRange=TR(日期[x],关闭[x],高点[x],低点[x],打开[x],关闭[x-1]) TypeError:“内置函数”或“方法”对象不可下标

我很高兴能得到任何帮助。 感谢 代码如下

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

Tags: datedeftrxxappendycmoveupmovedown
3条回答

你能显示你所有的导入语句吗

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

下午好。按建议去做。没有帮助

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:“内置函数”或“方法”对象不可下标

很抱歉,我没有插入代码的最后一部分

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.8000000”//高 “0.01575800”//低 “0.01577100”,//关闭 “148976.11427815”//卷 1499644799999,//关闭时间 “2434.19055334”,//配额货币 308,//交易数量 “1756.87402397”,//买方购买基础资产量 “28.46694368”,//买方买入报价资产量 “17928899.62484339”//忽略 ] ]

相关问题 更多 >

    热门问题