找基金股票类曲线的连续最大跌幅,并可视化

找到从一个波峰到后面临近的波谷的跌幅的最大值。绿线和红线之间的一段波峰到波谷的落差就是这段时间的最大连续跌幅。

import pandas as pd
import matplotlib.pylab as plt
import numpy as np
from time import perf_counter
to=perf_counter()
def maxfall(n=30):
    '''寻找最大连续跌幅'''    
    # data = np.random.randint(-10,40,n)*0.2 + np.random.randint(-10,10,n)  
    data = np.random.randn(n) 
    data=[round(i,2) for i in data]
    data[0] = 0
    maxDown,maxN,maxT,minL,temp =data[0],data[0],data[0],data[0],data[0]    
    for i in range(1,len(data)):
        maxN = max(maxN,data[i])
        temp = maxN - data[i]
        if data[i] > data[i-1]:
            maxN = data[i] #
        if temp > maxDown:
            maxDown = temp
            maxT = maxN
            minL = data[i]
    print('最大连续跌幅:',maxDown,"最大值:",(maxT),"最大值横坐标:",*np.argwhere(data == maxT))
    # data = pd.Series(data)
    # print('最大连续跌幅:',maxDown,'对应坐标:',data.where(data == maxT).dropna(),data.where(data == minL).dropna())
    # data.plot()
    # plt.scatter(data.index,data,s=10,color='g')
    plt.plot(data,'--P',markersize=4,linewidth=1)    
    plt.axhline(maxT,color='#14A054')
    plt.axhline(minL,color='r')
    print(perf_counter()-to)
    plt.show()
maxfall()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值