本程序使用AKShare接口,从东方财富获取数据。
本程序实现了若干种选股策略,大家可以自行选择其中的一到多种策略组合使用,参见work_flow.py,也可以实现自己的策略。
各策略中的end_date参数主要用于回测。
推荐使用 Miniconda来进行 Python 环境管理 Miniconda — conda documentation
安装 conda 后,切换到项目专属环境进行配置,例如:
# 在包含 dependencies.yml 文件的目录下运行
conda env create -f dependencies.yml
conda activate sequoia
conda activate sequoia
python test_env_setup.py
conda activate sequoia
./format_code.sh
本项目已切换至akshare数据接口,该项目更新频率较高,使用前建议检查接口更新
pip install akshare --upgrade
cp config.yaml.example config.yaml
$ python main.py
运行结果查看 logs 目录下生成的日志文件 格式为 logs/sequoia-$YEAR-$MONTH-$DAY-$HOUR-$MINUTE-$SECOND.log
如:logs/sequoia-2023-03-03-20-47-56.log
服务器端运行需要改为定时任务,共有两种方式:
-
使用Python schedule定时任务
- 将config.yaml中的
cron配置改为true,push.enable改为true
- 将config.yaml中的
-
使用crontab定时任务
- 保持config.yaml中的
cron配置为false,push.enable为true - 安装crontab
crontab -e添加如下内容(服务器端安装了miniconda3):
SHELL=/bin/bash PATH=/usr/bin:/bin:/home/ubuntu/miniconda3/bin/ # m h dom mon dow command 0 3 * * 1-5 source /home/ubuntu/miniconda3/bin/activate python3.10; python3 /home/ubuntu/Sequoia/main.py >> /home/ubuntu/Sequoia/sequoia.log; source /home/ubuntu/miniconda3/bin/deactivate
- 保持config.yaml中的
程序中的时间是服务器的本地时间,在部署的时候留意设置服务器时区为目标市场时区。
使用WxPusher实现了微信推送,用户需要自行获取wxpusher_token和topic_id,并配置到config.yaml中去。
修改config.yaml中end_date为指定日期,格式为'YYYY-MM-DD',如:
end = '2019-06-17'