当前位置 博文首页 > python flask开发的简单基金查询工具

    python flask开发的简单基金查询工具

    作者:guodongggg 时间:2021-08-11 18:46

    目录
    • 项目地址:
    • 1) 启动方法
    • 2) web查看方法
    • 3) 功能说明:
    • 4) 展示:
    • 代码

    项目地址:

    https://github.com/guodongggg/fund

    1) 启动方法

    (非必须)修改new.csv,参照test.csv,首行为基金代码,其次为每支基金在指定日期内的操作,正值为买入金额,负值为赎回份额。具体项目参照x_alpha项目

    修改code_list.json文件的prodect为你自己的基金代码,修改count为每支基金的金额,执行同级目录下的update_code_list.py,自动更新持仓百分比

    执行python run.py

    ps:初始化比较麻烦,我也暂时没优化,后面再说吧

    2) web查看方法

    打开浏览器,访问本地地址:http://127.0.0.1:8090
    在线示例:http://106.12.49.205

    3) 功能说明:

    • 大盘指数实时情况查看
    • 单支基金实时、近一周、近一月、近三月的涨跌情况
    • 总持仓实际涨幅、预估涨幅
    • 持仓成本图、饼状图、收益详情图(需修改new.csv)
    • 线性回归图例
    • 外链天天基金页面
    • 外链头条大V号
    • 外链微博大V号
    • 外链比特币
    • 外链薅羊毛页面

    4) 展示:

    代码

    涉及代码过多,不便全部放出,请自行下载项目查看,放出部分代码,仅供参考。

    update_over_json.py     基金代码列表

    import average_growth
    import json
    import common
    import choose_api
    from pathlib import Path
    
    
    def over_time(detail, board):
        """
        判断当日持仓的所有基金的合计涨幅是否超过沪深300
        :param code_list: list 基金代码列表
        :return: json文件,格式如下,HS300涨幅、持仓合计涨幅、持仓涨幅是否超过沪深300
            {
                "2020-12-31": {
                    "HS300": "1.91",
                    "my_position": "1.35",
                    "over_take": false
                },
                "2021-01-04": {
                    "HS300": "1.08",
                    "my_position": "1.33",
                    "over_take": true
                }
            }
            ......
        """
        # 获取日期
        try:
            date = detail[0]['netWorthDate']
        except:
            date = detail[1]['netWorthDate']
        hs300 = ''
        for i in board:
            if i['name'] == '沪深300':
                hs300 = i['changePercent']
    
        # 判断文件是否存在,不存在则创建
        json_file_name = 'file/bj.json'
        file = Path(json_file_name)
        file.touch(exist_ok=True)
    
        # 此时更新的准确净值涨幅的平均值
        avg = average_growth.average_growth(detail)['average_dayGrowth']
        print('hs300:', hs300)
        print('avg:', avg)
        # 写入文件
        with open("file/bj.json", 'r+') as f:
            try:
                data = json.load(f)
                f.seek(0, 0)
                f.truncate()
            except Exception as e:
                print(e)
                data = {}
            finally:
                print(f'获取数据: {data}')
                data[date] = {
                    'HS300': hs300,
                    'my_position': str(avg),
                    'over_take': True if float(avg) > float(hs300) else False
                }
                print(f'更新数据: {date}:{data[date]}')
                f.write(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')))
                print(f'{json_file_name} 已更新!')
    
    
    if __name__ == '__main__':
        code_list = common.get_codelist('product')
        data = choose_api.choose_api(code_list)
        detail = data['detail']
        board = data['board']
        over_time(detail, board)

    nasdaq.py    sina财经数据爬虫

    import requests
    
    
    def nasdaq():
        """
        爬取sina财经nasdaq基础数据
        :return: 构建的标准返回格式,只包含当日的数据,无历史数据
        """
        url = "http://hq.sinajs.cn/?rn=1609213839262&list=gb_$ndx"
        r = requests.get(url)
        response = r.text
        if r.status_code == 200:
            data = response.split('=')[1].split(',')
            nasdaq_data = {'name': data[0].strip('"'), 'code': '040046', 'price': data[1], 'priceChange': data[4], 'expectGrowth': data[2], 'dayGrowth': data[2], 'lastWeekGrowth': '-', 'lastMonthGrowth': '-', 'lastThreeMonthsGrowth': '-', 'date': ''}
            return nasdaq_data
        else:
            print(f'nasdaq return error: \n {response}')
    
    
    if __name__ == '__main__':
        nasdaq_data = nasdaq()
        for k, v in nasdaq_data.items():
            print(f'{k}: {v}')
    jsjbwy
    下一篇:没有了