下午好。
宣布了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
答案 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”对象不可下标