python flask開發的簡單基金查詢工具

項目地址:

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}')

以上就是python flask開發的簡單基金查詢工具的詳細內容,更多關於python 基金查詢工具的資料請關註WalkonNet其它相關文章!

推薦閱讀: