zoukankan      html  css  js  c++  java
  • 基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)

    一、简介

    玩过几个月的基金,所以今天闲着没事看能不能编程实现-从采集基金数据然后进行分析

    这里以白酒为例,相信玩过基金的人都知道,白酒这个基金上过几次热搜,在基金排行榜也是无人不知,所以选择了白酒为例(最重要的是2021-1-25,白酒涨幅了6.35%,这个是什么概念!!就是你买一百元就赚6.35元)。

    废话有点多,开始下一步。

    二、采集基金

    分析

    首先是页面,这里选择了蛋卷基金网页去采集数据

    https://danjuanapp.com/funding/161725?channel=1300100141

    其中白酒基金的代号是:161725

    通过F12查看数据包可以发现,这里网页是通过异步加载数据,那接下就好办了

    可知访问链接是

    https://danjuanapp.com/djapi/fund/nav/history/161725?size=200&page=1

    放到浏览器访问,可以返回json数据,同时我们也发现,通过改变代号161725,和size,可以获取不同基金的最新多少条数据。

    编程

    首先通过requests请求数据,code是对应的基金代号,这里161725是白酒基金,size是对应的数据量

    1.  
      code = 161725
       
      size = 365
       
      url = "https://danjuanapp.com/djapi/fund/nav/history/"+str(code)+"?size="+str(size)+"&page=1"
       
       
       
       
       
      headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
       
      }
       
      res = requests.get(url, headers=headers)
       
      res.encoding = 'utf-8'
       
      s = json.loads(res.text)

    获取到数据后。按从以前到现在(倒叙)打印,并且按月分开

    1.  
      s = s['data']['items']
       
      f = ((s[len(s)-1]['date']).split("-"))[1]
       
       
       
       
       
      for j in range(len(s)-1,-1,-1):
       
      i = s[j]
       
      m = (i['date'].split("-"))
       
      if m[1] == f:
       
      try:
       
      date = i['date']
       
      percentage = i['percentage']
       
      value = i['value']
       
      print("date=" + str(date) + ",percentage=" + str(percentage) + ",value=" + str(value))
       
      except:
       
      pass
       
      else:
       
      f = m[1]
       
      try:
       
      date = i['date']
       
      percentage = i['percentage']
       
      value = i['value']
       
      print("date=" + str(date) + ",percentage=" + str(percentage) + ",value=" + str(value))
       
      except:
       
      pass
       
      print("---------------")

    结果如下:

    三、可视化分析

    1.月初和月末对比

    1.  
      def analysis1(x,y1,y2):
       
      myfont = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
       
      a=x
       
      b_14=y1
       
      b_15=y2
       
       
       
       
       
      bar_width = 0.25
       
      x_14 = list(range(len(a)))
       
      x_15 = list(i + bar_width for i in x_14)
       
       
       
       
       
      # 设置图形大小
       
      plt.figure(figsize=(20, 8), dpi=80)
       
      plt.bar(range(len(a)), b_14, width=bar_width, label="月初")
       
      plt.bar(x_15, b_15, width=bar_width, label="月末")
       
       
       
       
       
      # 设置图例
       
      plt.legend(prop=myfont)
       
      #
       
      plt.xlabel("月份",fontproperties=myfont)
       
      plt.ylabel("",fontproperties=myfont)
       
      # 设置x轴刻度
       
      plt.xticks(x_15, a, fontproperties=myfont)
       
      plt.savefig("./mutiy.png")
       
      plt.show()

    效果图1

    分析:

    通过上面的条形图可知,最近几个月的月末值都大于月初值,说明这几个月都是属于盈利状态,尤其是2020-12月,盈利最大。而2020-8月是亏损最大的,从整体上来看,整年的月份整合下来,整体还是盈利的。

    2.当月最高涨和最低跌

    1.  
      ###2.当月最高涨、最低跌
       
      def analysis2(x,y1,y2):
       
      myfont = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
       
      a=x
       
      b_14=y1
       
      b_15=y2
       
       
       
       
       
      bar_width = 0.25
       
      x_14 = list(range(len(a)))
       
      x_15 = list(i + bar_width for i in x_14)
       
       
       
       
       
      # 设置图形大小
       
      plt.figure(figsize=(20, 8), dpi=80)
       
      plt.bar(range(len(a)), b_14, width=bar_width, label="当月最高涨")
       
      plt.bar(x_15, b_15, width=bar_width, label="当月最低跌")
       
       
       
       
       
      # 设置图例
       
      plt.legend(prop=myfont)
       
      #
       
      plt.xlabel("月份",fontproperties=myfont)
       
      plt.ylabel("",fontproperties=myfont)
       
      # 设置x轴刻度
       
      plt.xticks(x_15, a, fontproperties=myfont)
       
      plt.savefig("./mutiy.png")
       
      plt.show()

    效果图2

    分析:

    其中的蓝线是当月涨最高的一次,橙色是当月跌最多的一次。在2020-7月跌的最狠,10月和12月涨的也是较多。

    3.当月波动值(最高涨和最低跌之差)

    1.  
      ###3.当月波动值(最高涨、最低跌之差)
       
      def analysis3(x,y1,y2):
       
      myfont = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
       
      a=x
       
      y=[]
       
      for i in range(0,len(y1)):
       
      y.append(float(y1[i]-y2[i]))
       
      # 设置图形大小
       
      plt.figure(figsize=(20, 8), dpi=80)
       
      plt.plot(a,y, label="波动差值")
       
       
       
       
       
      # 设置图例
       
      plt.legend(prop=myfont)
       
      plt.xlabel("月份", fontproperties=myfont)
       
      plt.ylabel("", fontproperties=myfont)
       
      plt.savefig("./mutiy.png")
       
      plt.show()

    效果图3

    分析:

    图中显示是当月的最高涨和最低跌之差,这里采用这些图,效果更佳明显。2019-7月是波动最小的一个月,2020-7月是波动最大的一个月,都是7月,哈哈哈,真巧。

    4.月差值(月末减月初,该月是否盈亏)
    1.  
      ###4.月差值(月末减月初,该月是否盈亏)
       
      def analysis4(x,y):
       
      myfont = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
       
       
       
       
       
      # 设置图形大小
       
      plt.figure(figsize=(20, 8), dpi=80)
       
      plt.plot(x,y, label="月末-月初")
       
       
       
       
       
      # 设置图例
       
      plt.legend(prop=myfont)
       
      plt.xlabel("月份", fontproperties=myfont)
       
      plt.ylabel("", fontproperties=myfont)
       
      plt.savefig("./mutiy.png")
       
      plt.show()

    效果图4

    分析:

    当月的值大于0表示该月是盈利,小于0表示亏损。通过折线图来看,多数月份的值大于0,尤其是最近的几个月,更是远大于0。

    好了,就分析这些吧,要去吃饭了,下次再说(偷懒!)

    4、总结

    1. 以上的分析是以白酒为例(代号161725),通过改变代号可以通用分析其他的基金。

    2. 通过改变size可以分析几个月,近一年,近几年的基金数据。

    3. 这套分析模板,通用所以基金,需要的可以自行跑代码去分析(代码获取方式在下方)

    ps:上次制作了一个获取各种免费破解软件的网站,需要的可以在:1.后台菜单->福利资源、2.阅读原文、3、http://bk.chenlove.cn

    【本文完整源码获取方式】

    识别文末二维码,回复:基金分析

    ------------------- End -------------------

    【各种爬虫源码获取方式】

    识别文末二维码,回复:爬虫源码

    ------------- 精彩文章 -------------

    花一天时间做了一个福利资源网站!免费分享给大家

    1500元让我写一个api接口!没问题

    python实现四种出行路线规划(公交、步行、驾车、骑行)

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    包装类型
    int 和 Integer 有什么区别
    final finally finalize区别
    java关键字final 有什么用?
    String和StringBuffer、StringBuilder的区别是什么?
    String 类的常用方法都有那些?
    Vue官网教程-计算属性和监听器
    Vue官网教程-模板语法
    Vue官网教程-实例
    Vue官网教程-介绍
  • 原文地址:https://www.cnblogs.com/chenlove/p/14337804.html
Copyright © 2011-2022 走看看