为了动态定位最高K线位置,在K线数量399内循环调用了hhv函数,发现内存占用严重,运行一段时间后报错退出:
MemoryError:Unable to allocate 3.12 Kib for an array with shape<399,> and datatype int64
【3940】Failed to execute script
请教:
1、hhv函数调用后是否未释放内存或释放比较慢?该如何优化?
2、有其他好办法动态定位最高最低K线位置吗?完成类似功能: high>=hhv(high,21) and high>=hhv(high,35)?
谢谢!
yanqiong Ma 已回答的问题 2020年7月16日
你是怎么使用的呢,有没有简短的重现代码呢
kenny 发表新评论 2020年7月13日
代码黏贴上去老变形.while这句是
while(count<390):
if(iklines.high.iloc[-1-count]>=hhv(iklines.high,ND0).iloc[-1-count] and iklines.high.iloc[-1-count]>=hhv(iklines.high,15+ND0).iloc[-1-count])
if (countH>0 and countL>0):
break;
ND0=21
#NHD01,NHD02,NLD01,NLD02=0,0,0,0
NHD1,NLD1,NHD2,NLD2=0,0,0,0
#第1高低点
countH,countL=0,0
count=0
while (count=hhv(iklines.high,ND0).iloc[-1-count] and iklines.high.iloc[-1-count]>=hhv(iklines.high,15+ND0).iloc[-1-count]):
countH=countH+1
if (countH==1):
NHD1=count
if (iklines.low.iloc[-1-count]<=llv(iklines.low,ND0).iloc[-1-count] and iklines.low.iloc[-1-count]0 and countL>0):
break;