如何搭建量化交易环境

1. 线下回测方案

使用 Python + Pandas/NumPy/Backtrader 的方案:

  1. 环境准备
  2. 获取数据
  3. 编写回测策略
  4. 设置回测环境并运行
  5. 计算策略效果指标
  6. 绘图结果可视化

可以在 Colab 中实现。


2. 线上部署方案

2.1 预发布测试(港股富途 + 本地 + Mac)

  1. 下载安装富途的 OpenD,建议放在下载或用户文件夹中

  2. 执行 sh文件解决权限问题

    cd 解压后的目录名
    chmod +x fixrun.sh
    bash fixrun.sh
  3. 在 FutuOpenD.xml内配置账户和密码
    密码建议用密文,需手动用 MD5 生成工具生成自己密码的密文,填入 XML
    XML内 密文对应行的默认注释符号需要去掉。

  4. 双击文件夹内 OpenD 主程序
    按提示格式,输入含手机验证码的命令行,回车。

  5. 首次使用需填表,后权限打开,完成 OpenD 安装启动

  6. 安装富途API

    pip3 install futu-api
  7. 新建 .py文件,代码参考:Futu API 示例
    注意新账号需要先对需要的数据项目订阅quote_ctx.subscribe

  8. 命令行下执行.py策略文件:

    python -u [py文件路径]

2.2 正式线上部署(港股富途 + 云主机 + Linux)

  1. 判断操作系统是 centos 还是Ubuntu

    cat /etc/os-release
  2. 准备工作
    放行主机的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
  3. 安装 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
  4. 修改xml 里的账户密码

    vi FutuOpenD.xml

    按i进入编辑模式,编辑完后,esc 退出编辑模式
    :wq退出 vim 编辑器

  5. 启动OpenD

    chmod +x FutuOpenD
    ./FutuOpenD

    nohup可以长期保留后台运行,即使关闭命令行窗口也不会退出

    cd Futu_OpenD_8.8.4808_Centos7
    cd Futu_OpenD_8.8.4808_Centos7
    nohup ./FutuOpenD &
  6. 关闭窗口,重新进入后台,验证OpenD是否后台常驻成功

    ps aux | grep ./FutuOpenD
  7. 安装futu-api

    pip3 install futu-api
  8. 上传策略文件,执行

    python3 -u [XXX你的策略文件XXX.py]

    如果无法执行需要重新启动 openD(nohup可以让OpenD长期保留后台运行,即使关闭命令行窗口也不会退出)

    cd Futu_OpenD_8.8.4808_Centos7
    cd Futu_OpenD_8.8.4808_Centos7
    nohup ./FutuOpenD &
  9. 查看策略是否正在运行

    ps aux | grep [策略文件名]
  10. 停止策略

    kill <PID>

    找到进程 ID (PID) 并终止

2.3 常规消息通知和环境监控(server 酱在线通知 + Healthchecks心跳监控)

  1. server 酱申请账号和 key
    建py 文件,负责向server 酱发送通知(指标信号、执行信息等),透传消息,主文件引用

  2. Healthchecks申请账号和 key,设置心跳频率(主动低频策略1天、被动高频策略可以设置 1 分钟)
    建py 文件,负责向Healthchecks服务发送通知,主文件引用
    当Healthchecks服务在心跳频率内没有收到通知,则通过 webhook 向server 酱发生通知,透传 服务器停止心跳 的消息。


3. 不同策略适合的运行方式

  • 方式一:(适合中长期策略,主动请求行情)
    Linux 系统层设置定时任务,每日定时执行基于日K 的策略文件

  • 方式二:(适合短中期高频策略,被动接收行情)
    策略放在后台启动,可以实现常驻。同时将日志输出保存到同目录下 .log文件中

    nohup python3 -u [策略文件路径.py] > [当前路径.log] 2>&1 &
浏览量(26) | 此条目发表在经济学分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据