1. 线下回测方案
使用 Python + Pandas/NumPy/Backtrader 的方案:
- 环境准备
- 获取数据
- 编写回测策略
- 设置回测环境并运行
- 计算策略效果指标
- 绘图结果可视化
可以在 Colab 中实现。
2. 线上部署方案
2.1 预发布测试(港股富途 + 本地 + Mac)
-
下载安装富途的 OpenD,建议放在下载或用户文件夹中
-
执行 sh文件解决权限问题
cd 解压后的目录名 chmod +x fixrun.sh bash fixrun.sh
-
在 FutuOpenD.xml内配置账户和密码
密码建议用密文,需手动用 MD5 生成工具生成自己密码的密文,填入 XML
XML内 密文对应行的默认注释符号需要去掉。 -
双击文件夹内 OpenD 主程序
按提示格式,输入含手机验证码的命令行,回车。 -
首次使用需填表,后权限打开,完成 OpenD 安装启动
-
安装富途API
pip3 install futu-api
-
新建 .py文件,代码参考:Futu API 示例。
注意新账号需要先对需要的数据项目订阅quote_ctx.subscribe -
命令行下执行.py策略文件:
python -u [py文件路径]
2.2 正式线上部署(港股富途 + 云主机 + Linux)
-
判断操作系统是 centos 还是Ubuntu
cat /etc/os-release
-
准备工作
放行主机的11111 端口,云服务设置里找找netstat -an | grep 11111
更新系统,安装 Python
sudo yum update -y # CentOS sudo yum install python3 -y
如果网络不行切换镜像
sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo sudo sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo sudo yum clean all sudo yum makecache
-
安装 openD
wget https://softwaredownload.futunn.com/Futu_OpenD_8.8.4808_Centos7.tar.gz tar -zxvf Futu_OpenD_8.8.4808_Centos7.tar.gz cd Futu_OpenD_8.8.4808_Centos7 cd Futu_OpenD_8.8.4808_Centos7
-
修改xml 里的账户密码
vi FutuOpenD.xml
按i进入编辑模式,编辑完后,esc 退出编辑模式
:wq退出 vim 编辑器 -
启动OpenD
chmod +x FutuOpenD ./FutuOpenD
nohup可以长期保留后台运行,即使关闭命令行窗口也不会退出
cd Futu_OpenD_8.8.4808_Centos7 cd Futu_OpenD_8.8.4808_Centos7 nohup ./FutuOpenD &
-
关闭窗口,重新进入后台,验证OpenD是否后台常驻成功
ps aux | grep ./FutuOpenD
-
安装futu-api
pip3 install futu-api
-
上传策略文件,执行
python3 -u [XXX你的策略文件XXX.py]
如果无法执行需要重新启动 openD(nohup可以让OpenD长期保留后台运行,即使关闭命令行窗口也不会退出)
cd Futu_OpenD_8.8.4808_Centos7 cd Futu_OpenD_8.8.4808_Centos7 nohup ./FutuOpenD &
-
查看策略是否正在运行
ps aux | grep [策略文件名]
-
停止策略
kill <PID>
找到进程 ID (PID) 并终止
2.3 常规消息通知和环境监控(server 酱在线通知 + Healthchecks心跳监控)
-
server 酱申请账号和 key
建py 文件,负责向server 酱发送通知(指标信号、执行信息等),透传消息,主文件引用 -
Healthchecks申请账号和 key,设置心跳频率(主动低频策略1天、被动高频策略可以设置 1 分钟)
建py 文件,负责向Healthchecks服务发送通知,主文件引用
当Healthchecks服务在心跳频率内没有收到通知,则通过 webhook 向server 酱发生通知,透传 服务器停止心跳 的消息。
3. 不同策略适合的运行方式
-
方式一:(适合中长期策略,主动请求行情)
Linux 系统层设置定时任务,每日定时执行基于日K 的策略文件 -
方式二:(适合短中期高频策略,被动接收行情)
策略放在后台启动,可以实现常驻。同时将日志输出保存到同目录下 .log文件中nohup python3 -u [策略文件路径.py] > [当前路径.log] 2>&1 &
windows的cmd命令行,整理成可执…