python量化 交叉取值

python如何实现

取4个列表值,hongda,lvxiao,hongxiao,lvda。

数据源用tushare获取,以双均线ma30, ma60为例

有两条线,绿线a,红线b。

当a<= b死叉到a<= b金叉(红色云)时,取b的最大值添加到(hongda)里,a的最小值添加到(lvxiao)里。

当a>= b金叉到a<= b死叉(绿色云)时,取a的最大值添加到(lvda)里,b的最小值添加到( hongxiao)里。

当a, b两条线值连续(两次以上)相等时。

如果后面是死叉(红色云),添加一个值在( hongda)和(lvxiao)列表里

如果后面是金叉(绿色云),添加一个值在( hong xiao)和( lvda)列表里

img

jingcha=list()
shicha=list()

for i in range(52,b.shape[0]):
zt5=a[i-1]
zt20 = b[i - 1]
jt5 = a[i]
jt20 = b[i]
if zt5<=zt20 and jt5>=jt20:
jingcha.append(i)

    #print(jingcha,'金叉',b[jingcha])
elif zt5>=zt20 and jt5<=jt20:
    shicha.append(i)

bd=list()
ad=list()
bx=list()
ax=list()

k=sorted(jingcha+shicha)

for f in range(len(k)-1):
#if shicha[f] < jingcha[f]:
bd.append(max(b[k[f]:k[f+1]]))
ad.append(max(a[k[f]:k[f + 1]]))
bx.append(min(b[k[f]:k[f+1]]))
ax.append(min(a[k[f]:k[f + 1]]))

bbd=list(np.round(np.array(bd),2))
aad=list(np.round(np.array(ad),2))
bbx=list(np.round(np.array(bx),2))
aax=list(np.round(np.array(ax),2))
hongda=list()
luxiao=list()
luda=list()
hongxiao=list()

for l in range(len(bbd)):
if bbd[l]-aad[l]>=0:
hongda.append(bbd[l])
for q in range(len(bbx)):
if aad[q]-bbd[q] >= 0:
hongxiao.append(bbx[q])
for z in range(len(aad)):
if aax[z]-bbx[z]>=0:
luda.append(aad[z])
for g in range(len(aax)):
if aax[g]-bbx[g]<=0:
luxiao.append(aax[g])

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。