我想开发一个个人使用的与币安交互的前后端项目,包括币安合约数据的获取、数据的处理、数据的持久化 - 后端使用python3.10,前端使用vue3,fastapi,redis,mysql8,binance-futures-connector - python-socks: 提供异步SOCKS代理支持 - 币安获取到的时间是UTC,需要转为UTC+8 - 日志储存在根目录下的‘logs’文件夹 - 在配置文件中规定与币安的交互是否使用代理‘# SOCKS5 代理配置 SOCKS5_DL=True # 是否启用代理 (True/False) SOCKS5_HOST=127.0.0.1 SOCKS5_PORT=1088’ - ‘# Redis配置 REDIS_HOST = "localhost" REDIS_PORT = 6379 REDIS_DB = 2 REDIS_PASSWORD = None # 如果没有密码则为None ’ - ‘# 数据库配置 DB_HOST = "localhost" DB_PORT = 3306 DB_USER = "root" DB_PASSWORD = "dB.p2Q3SQNkLNP." DB_NAME = "np_bn"’ - 数据获取模块 1. - 项目启动先通过api获取到所有交易对,并将获取到的交易对信息保存到数据库,并设计一个redis键来储存‘ SMEMBERS binance:futures:tradeable_symbols’ - 设计个redis储存交易对交易规定的杠杆、精度等信息 - 只储存usdt结尾的交易对(USDT计价),交易对的名称需要用小写保存到redis和数据库 - 在每个小时的00分20秒、30分20秒请求获取一次交易对,有更新则更新到redis和mysql 2. - 通过websocket来订阅所有可以交易的交易对的k线和资金费率数据 -分批订阅的方式订阅,每批200个交易对 - 订阅的k线数据:1m\3m\5m\15m\4h\1d,k线完成时保存到数据库和redis历史键,实时获取的数据(k线不闭合)不储存到数据库,只存到redis实时键 - 订阅资金费率数据‘<symbol>@markPrice@1s’,按事件时间的“00”秒存到数据库和redis历史键,并创建个redis键存储实时的数据 - 数据保存到数据库采用分批的方式,一批500 - websocket订阅的k线数据需要支持命令行新增订阅的周期 - 当api有新交易对的时候,需要同步新交易对的websocket数据 - 交易对的名称需要用小写保存到redis和数据库 - redis历史数据存500个历史数据 - 遇到报错指数回避 - 为了防止内存溢出,定时的重启websocket(先重启,再杀死旧的) - 数据分析模块 - 在前端的macd指标菜单显示出macd指标和k线 - 数据分析的数据从redis中获取