在当今数字货币交易领域,程序化交易因其高效、客观和可执行复杂策略的优势,已成为越来越多专业交易者的首选,VNPy作为一款开源、功能强大的Python量化交易平台框架,凭借其灵活性和可扩展性,深受国内量化开发者的喜爱,而币安(Binance)作为全球领先的数字货币交易所,提供了丰富的交易品种和稳定的API接口,将VNPy与币安交易所连接,意味着交易者可以利用VNPy强大的策略开发和回测功能,对接币安真实的交易市场,实现自动化交易,本文将详细介绍如何实现VNPy与币安交易所的连接。

准备工作:连接前的必要条件

在开始连接之前,请确保您已完成以下准备工作:

  1. 安装VNPy:您需要在您的本地环境或服务器上安装VNPy,您可以从VNPy的官方网站(https://www.vnpy.com/)获取安装指南和源代码,按照指引完成安装,推荐使用Python虚拟环境进行安装,以避免依赖冲突。
  2. 注册币安账户并获取API
    • 访问币安官网(https://www.binance.com/)并完成注册。
    • 登录账户,进入“API管理”页面。
    • 创建新的API Key,请注意安全第一
      • 为API设置一个容易识别的标签(VNPy交易”)。
      • 强烈建议开启“IP访问限制”,将您的VNPy运行环境的IP地址加入白名单,以防止API被恶意使用。
      • 根据您的需求,选择“启用现货交易”和/或“启用合约交易”(如果需要交易合约)。
      • 创建成功后,您将获得API Key(密钥)Secret Key(秘密)Secret Key只显示一次,请务必妥善保管,切勿泄露!
  3. 了解VNPy架构:VNPy采用模块化设计,核心引擎(vnpy.event、vnpy.trader等)负责事件驱动和指令执行,而具体的交易接口(Gateway)负责与不同的交易所或券商通信,连接币安,我们需要使用币安的Gateway。

选择与安装币安Gateway

VNPy社区为币安提供了专门的Gateway插件,支持现货和U本位合约交易。

  1. 查找Gateway:币安的Gateway通常位于VNPy的vnpy_gateway包中,具体可能是vnpy_gateway_binance或类似名称,您可以在VNPy的GitHub仓库(https://github.com/vnpy/vnpy)的gateways目录下找到,或者通过PyPI(Python包索引)安装。
  2. 安装Gateway
    • 如果从GitHub安装,通常使用命令:pip install git+https://github.com/vnpy/vnpy-gateway-binance.git
    • 如果PyPI上有发布版本,可以使用:pip install vnpy-gateway-binance
    • 确保安装的Gateway版本与您的VNPy核心版本兼容。

配置VNPy以连接币安

安装完Gateway后,我们需要修改VNPy的配置文件,使其能够加载并使用币安Gateway。

  1. 找到配置文件:VNPy的配置文件通常是vnpy/app/cTAHedge/config.json(如果您使用的是CTA策略模块)或者更通用的vnpy/trader/app/vnpy_trader/config.json(具体路径可能因VNPy版本和启动方式略有不同,请以实际为准)。

  2. 修改配置文件

    • 打开config.json文件。
    • [GATEWAY]部分(或类似的部分,不同版本可能略有差异),确保"gateway setting"列表中包含币安的配置。
    • 添加或修改币安的配置项,通常如下所示:
    "setting": {
        "log.file": true,
        "log.console": true,
        "log.level": "debug",
        "email.server": "",
        "email.username": "",
        "email.password": "",
        "email.sender": "",
        "email.receiver": ""
    },
    "gateways": [
        {
            "name": "BINANCE",
            "module": "vnpy_gateway_binance",
            "setting": {
                "api_key": "您的币安API_KEY",
                "secret_key": "您的币安SECRET_KEY",
                "testnet": false,  // 设为true则使用币安测试网,实盘交易设为false
                "sandbox": false,  // 是否启用沙盒模式(与testnet类似,具体看Gateway实现)
                "symbols": ["BTCUSDT", "ETHUSDT"], // 可选,指定需要订阅的合约代码,不填则默认获取
                "channels": ["Trade", "Ticker", "OrderBook", "Kline_1m"] // 可选,指定需要订阅的通道
            }
        }
    ]
    • 重要参数说明随机配图