yy228318 2021-09-25 11:53 采纳率: 60%
浏览 130
已结题

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

  • 写回答

2条回答 默认 最新

  • yy228318 2021-09-25 12:13
    关注

    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])

    评论

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 创建了问题 9月25日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料