跳转至

Apifiny 算法交易系统

Apifiny 算法交易系统是一个支持多种加密货币交易的交易库。 AATS 的核心价值是轻量级和低延迟,因为底层系统是用 C++ 优化和封装的,例如交易所连接、订单簿管理和下单。它极大地降低了用户的学习曲线。使用 AATS,用户可以无缝地部署您的策略并准备好进行实时交易,而不会感到任何痛苦。下面是AATS python API的介绍。

包结构

在python模块级别,AATS利用事件驱动框架,由以下组件组成:

  • Base Strategy:它是一个基本策略类,您可以基于它开发您的策略
  • Trade Service:它是核心交易模块,用于加载配置、启动交易服务器和添加策略并开始运行实时交易
  • Market Service:用于启动市场服务器,订阅您想收听的品种和交易所
  • Control Service:与服务器管理有关,例如显示正在运行的市场/交易服务器,杀死服务器等

基本策略

一旦您的策略继承Base Strategy,您可以改写以下函数/回调并添加您自己的逻辑:

函数/回调 说明
send_order 发送订单功能
send_cancel_order 发送取消订单的功能
close 函数定义如何关闭策略
onQuote 订单簿数据更新后回调
onTick 交易数据更新后回调
onNotify onQuote 和 onTick 的组合
onOrderCreated 新订单创建后的回调
onOrderAcked 交易所确认新订单后回调
onOrderRejected 新订单被交易所拒绝后回调
onOrderCancelCreated 取消订单创建后的回调
onOrderCancelAcked 交易所确认取消订单后回调
onOrderCancelRejected 一旦取消订单被交易所拒绝,回调
onOrderExec 一旦从交易所执行订单(包括部分执行),回调
onOrderCanceled 从交易所取消订单后回调
onOrderClosed 一旦订单从交易所关闭,回调

发送订单

领域 说明 强制性
exchange 你想交易的交易所
symbol 您要交易的符号
price 交易价格
size 交易规模
side 交易方向
tif 订单类型,目前支持IOC和POS

取消订单

领域 说明 强制性
order_id 内部订单编号

close

这是一个抽象函数,用户需要重写它并定义如何正确关闭您的策略,如取消当前委托订单,平仓等。

onQuote

回调一旦订单数据更新,消息包含以下字段:

{
    'type': 'onQuote', 
    'cid': 1001, 
    'length': 5, # order book depth level
    'bid_0_qty': 0.27713, 
    'bid_0_px': 19327.67, 
    'bid_1_qty': 0.04621, 
    'bid_1_px': 19327.08, 
    'bid_2_qty': 0.12618, 
    'bid_2_px': 19326.8, 
    'bid_3_qty': 0.05, 
    'bid_3_px': 19326.68, 
    'bid_4_qty': 0.28508, 
    'bid_4_px': 19326.66, 
    'ask_0_qty': 0.13624, 
    'ask_0_px': 19327.87, 
    'ask_1_qty': 0.0063, 
    'ask_1_px': 19327.92, 
    'ask_2_qty': 0.02602, 
    'ask_2_px': 19328.0, 
    'ask_3_qty': 0.32749, 
    'ask_3_px ': 19328.07, 
    'ask_4_qty': 0.0066, 
    'ask_4_px': 19328.16
    }

OnTick

回调一旦交易数据更新,消息包含以下字段:

{
    'type': 'onTick', 
    'cid ': 1002, 
    'tradeType': 1, # aggresive trade side, 1 for buy, -1 for sell
    'qty': 0.0249, 
    'px': 1638.93
    }

onNotify

回调一旦 onTrade 或 onQuote 被触发, 参数“no_type”表示通知类型,1为onQuote,0为onTick

onOrder**

onOrder不同order的回调状态,消息包含以下字段:

{
    "order":{
        "exchange":"BINANCE",
        "fill_notional":"0",
        "fill_price":"19318.88",
        "fill_size":"0.001",
        "margin":false,
        "margin_source":"spot",
        "order_id":1,           # 内部订单id
        "price":"19318.88",
        "remote_id":"",         # 交易所订单id
        "side":"buy",
        "size":"0.001",
        "symbol":"BTCUSDT"
        },
    "type":"onOrderCreated"     # 订单状态
    }

Trade Service

Trade Service提供以下API

函数/回调 说明
set_ts_connection 设置与Control Server的连接配置
set_md_connection 设置与Market Server的连接配置
config_exchange 设置交易所相关配置
set_apikey 设置 apikeys
set_fee 设置佣金(可选)
add_md_symbol 添加你想听的交易品种
add_trade_symbol 添加您要交易的交易品种
add_strategy 添加用户定义策略
run 开始实时交易

set_ts_connection

领域 说明 强制性
ip Control Service的ip地址
port Control Service的端口

set_md_connection

领域 说明 强制性
ip Market Server的ip地址
port Market Server的端口
send_type 发送类型

配置交换

领域 说明 强制性
exchange 交易所名称
trade_type 交易模式,“直接”用于实时交易,“沙盒”用于测试交易,目前“沙盒”仅支持币安

set_apikey

参数 说明 强制性
exchange 交易所名称
key api 键
secert api 秘密
password api密码
subaccount api子账号

set_fee

参数 说明 强制性
交流 交易所名称
taker_fee Taker佣金
maker_fee Maker佣金

add_md_symbol

参数 说明 强制性
符号 币对名称
exchange 交易所名称
level_num 订单簿最大深度,默认为5

add_trade_symbol

参数 说明 强制性
symbol 币对名称
exchange 交易所名称
level_num 订单簿最大深度,默认为5

add_strategy

参数 说明 强制性
strategy 用户自定义策略实例

市场服务

对于市场服务,我们提供了三种模式,P2P是云用户,BROADCAST是docker用户,MULTIBROAD是本地用户。您需要针对不同的用户案例相应地设置网络配置。

市场服务提供以下API

函数/回调 说明
set_control_server 设置与Control Server的连接配置
set_network_cfg 为Market Server设置网络配置
add_listen_symbol 添加监听币对
run 开始运行

set_control_server

领域 说明 强制性
ip Control Server的ip地址
port Control Server的端口

set_network_cfg

领域 说明 强制性
send_type 发送消息类型。默认为 P2P
ip UPD/TCP IP 地址
port UPD/TCP 端口
card_name 网卡名称。仅当发送类型为 MULTIBROAD时才设置

备注: send_type 共有三种, 1. P2P - TCP 点对点数据传输 2. BROADCAST - UDP 广播数据传输 3. MULTIBROAD - UDP MULTIBROAD数据传输

当传输类型为P2P时,参数ip和port对应行情数据服务器监听的ip地址和端口。 传输类型为BROADCAST时,参数ip(255.255.255.255)和端口对应广播ip和接收方的端口 传输类型为MULTIBROAD时,参数ip(224.0.0.0 to 239.255.255.255)和port对应MULTIBROAD的ip和接收端的端口

add_listen_symbol

领域 说明 强制性
symbol 符号名称
exchange 交易所名称
level_num 订单簿最大深度,默认为5

Control Service

Control Service具有以下功能:

函数/回调 说明
set_control_server 设置Control Service器的连接配置
show_all_trade_servers 列出所有正在运行的交易服务器
show_all_market_servers 列出所有正在运行的市场服务器
kill_server 用给定的 pid 杀死服务器