配置
基于算法的应用程序使用 json 配置文件来指定其环境并组装交易逻辑。
json 配置文件包含两种顶级节点: 第一种节点提供信息,它们的格式是节点特定的;第二种节点为应用程序创建组件对象,它们的格式更标准。
信息节点
instance
指定整个实例的名称、日志路径等信息。
"instance":{
"log_path":"./logs/strategy_demo",
"name":"strategy_demo",
"license_id":"",
"license_key":"",
"latency_enable":false
}
Field | Description | Mandatory |
---|---|---|
name | 交易实例的名称。用于构造日志文件名和策略名 | 是 |
log_path | 写入日志文件的目录。 | 是 |
log_level | 日志记录的级别。 Values: 0: all, 1: debug, 2: info, 3: warnning, 4: error |
没有 |
license_id | 您的 Apifiny 帐户中的许可证 ID | 是 |
license_key | 您的 Apifiny 帐户的许可证密钥 | 是 |
latency_enable | 延迟文件的启用标志。默认为假 | 没有 |
!!! 提示: 可以将 license_key 等常用项放在一个单独的文件中,然后将路径放在后面提到的 include 节点中。
includes
您可以将您的 json 配置分解为多个文件,并使用包含标签将它们链接在一起。 Algo 解析节点中列出的 json 文件,并将它们组合在一起。如果一个项目出现多次,包含的项目将被覆盖。
"includes": [
"./config_models/huobi_btc_model.json"
]
servers
它包含实例可能连接到的其他服务器软件的配置。
"服务器":{
"redis_server":"127.0.0.1"
}
Field | Description | Mandatory |
---|---|---|
redis_server | Algo 实例使用这个 redis 服务器来发布统计信息。在此处设置其 IP 地址 | 没有 |
exchanges
它列出了此实例将订阅市场数据和/或下订单的交易所。
"exchanges":[
{"exchange":"OKEX_SWAP","trade_type":"Direct","market_data_type":"Direct"}
]
每个项目包含以下字段:
Field | Description | Mandatory |
---|---|---|
exchange | 交易所名称。 | 是 |
trade_type | 我们如何下订单。 "直接":在此交易所下订单。 "无":不下单。 |
是 |
market_data_type | 我们如何处理市场数据。 "直接":直接订阅市场数据。 "Exchange_Setting":使用交易所的配置设置(使用交易所的配置设置(参考market_data_channel中的值)) "无":没有市场数据。 |
是 |
market_data_channel | 我们处理的市场数据通道。 BINANCE:"depth@100ms"、"depth@1000ms"和"bookTicker"。 BINANCE_SWAP:"depth@100ms"、"depth@1000ms"和"bookTicker"。 BINANCE_FUTURES:"depth@100ms"、"depth@1000ms"和"bookTicker"。 BINANCEUS:"depth@100ms"、"depth@1000ms"和"bookTicker"。 FTX:"订单簿","股票代码"。 FTX_SWAP:"订单簿","股票代码"。 FTX_FUTURES:"订单","股票代码"。 火币:"ticker"、"bbo"。 HUOBI_SWAP: "depth.size_20.high_freq", "depth.size_150.high_freq", "bbo"。 HUOBI_FUTURES: depth.size_20.high_freq", "depth.size_150.high_freq", "bbo"。 OKCOIN: "depth", "ticker", "depth_l2_tbt"。 OKEX: "books", "books-l2-tbt"、"books50-l2-tbt"、"bbo-tbt"、"books5"。 OKEX_SWAP:"books"、"books-l2-tbt"、"books50-l2-tbt" , "bbo-tbt","books5". OKEX_FUTURES: "books", "books-l2-tbt", "books50-l2-tbt", "bbo-tbt","books5". |
No |
### apikeys
它包含交易所的api密钥。实例将下订单的每个交易所都需要在地图中有一个项目。
"apikeys": {
"OKEX_SWAP": {
"key": "输入您的api密钥",
"secret": "enter your api secert",
"pass": "enter your api passphrase"
}
}
每个配置的交易所需要以下字段:
Field | Description | Mandatory |
---|---|---|
key | api 密钥 | 是 |
secret | api 秘密 | 是 |
pass | 某些交易所需要的密码 | 否 |
fees
它列出了实例将下订单的每个交易所的制作费用和接受费用。
"fees": {
"OKEX_SW AP": {
"make": 0.0,
"take": 0.0002
}
}
每个配置的交换都需要以下字段:
Field | Description | Mandatory |
---|---|---|
make | 制作费率 | 是 |
take | 取费率 | 是 |
symbol_info
它保存安全主信息,例如刻度大小。它是可选的。 SDK 默认加载其管理的安全主数据。您可以使用此节点覆盖它们。
"symbol_info": {
"BTCUSDT.HUOBI": {"ticksize": 0.01, "lotsize": 0.0001, "price_precision": 2, "min_order_size": 0.0001, "qty_precision": 6, "multiple": 1.0, "coin ": "BTC", "base_coin": "USDT", "local_name": "BTC-USDT", "ct_type": true, "lever": 2}
}
Field | Description | Mandatory |
---|---|---|
ticksize | 最小的价格变化。 | 是 |
lotsize | 提供良好费用的最低订购量。与加密货币的 min_order_size 相同 | 是 |
min_order_size | 起订量 | 是 |
price_precision | 代表订单价格的最大小数位数 | 是 |
qty_precision | 表示订单数量的最大小数位数 | 是 |
coin | 交易对左侧,即交易货币。 | 是 |
base_coin | 交易对右侧,即报价货币。 | 是 |
local_name | 交易中使用的交易品种名称。 | 是 |
ct_type | 合约类型,标准合约为true,反向合约为false。 | 是 |
multiple | 衍生品的合约乘数。默认值为 1。没有 | |
lever | 保证金交易的杠杆。请注意,它仅用于 QuantLib 系统,最好与交易所使用的真实杠杆保持一致。默认值为 1。没有 |
!!!提示 您可以在现货交易中跳至配置 symbol_info。但是,如果您想进行保证金交易,您需要在 symbol_info 中手动指定"杠杆",并在策略组件中设置"use_margin"和"margin_source"。
symbols
它包含此实例使用的符号列表。每个符号都应该有一个 cid,它在当前实例中必须是唯一的。
"symbols": [
{"port": ["BTCUSDT", "HUOBI"], "cid": 10000}
]
Field | Description | Mandatory |
---|---|---|
port | 代表交易品种的元组。它的格式是[ticker, exchange] | 是 |
cid | 代表交易品种的唯一数字 | 没有 |
Component nodes
第二种类型的节点是一个项目列表,每个项目都包含一个名称及其定义。该定义包含一个类名和一个属性映射。算法应用程序将从类创建一个对象并使用属性对其进行初始化,并为其指定名称。
players
它包含历史数据播放器。它们用于回测和实时交易的预热期。
"players":[
["BTCUSDT.HUOBI_Player",["CobJsonPlayer",{"端口":["BTCUSDT","HUOBI"],"路径":"/data/cc/prod/ccc_record_2"}]]
]
玩家的标准属性:
Field | Description | Mandatory |
---|---|---|
port | 代表交易品种的元组。它的格式是[ticker, exchange] | 是 |
path | 该目录包含历史市场数据 | 是 |
带有 Algo SDK 的播放器:
Class | Description |
---|---|
CobJsonPlayer | 播放 Algo 的 mktpub 生成的历史数据。 |
TardisPlayer | 从 tardis.dev 播放快照历史数据 |
risk_formulas
它包含风险公式。风险公式计算投资组合的风险,并在账户组件中使用。
"risk_formulas": [
["RF01", ["RiskFormula", {"components": [[["BTCUSDT", "HUOBI"], 1.0]]}]]
]
风险公式的标准属性:
Field | Description | Mandatory |
---|---|---|
components | 元组列表 [端口,重量] | 是 |
随 Algo SDK 提供的 RiskFormulas:
Class | Description |
---|---|
RiskFormula | 计算组件中列出的符号的加权和。 |
accounts
它包含帐户。账户对交易品种进行分组并计算其头寸、名义和风险。每个账户都有一个 id,您在创建策略时将此账户 id 指定给策略。由策略管理的交易品种随后将包含在账户中。
"accounts": [
[10001, ["Account", {"risk_formulas": ["RF01"], "id": 10001}]]
]
账户的标准属性:
Field | Description | Mandatory |
---|---|---|
risk_formulas | 风险公式名称列表。 | 是 |
id | 代表帐户的数字,与帐户名称相同。 | 是 |
随 Algo SDK 提供的帐户:
Class | Description |
---|---|
Account | 管理投资组合的每个符号和风险的头寸和名义。 |
samplers
它包含采样器。当采样事件发生时,采样器会触发 onSample() 回调,例如经过的持续时间。它还计算此事件的衰减值。 采样器在系统中广泛用于信号计算和数据生成。它们可以基于时间或其他事件。
"samplers": [
["ts_basis", ["TimeSampler", {"halflife": 1, "msecs": 100}]]
]
## pricing_models
它包含定价模型。定价模型产生资产的公允价值。它可以从账簿、交易或投资组合中计算出来。
"pricing_models": [
["BTCUSDT.HUOBI_midpx", ["MidPx", {"port": ["BTCUSDT", "HUOBI"]}]]
]
variables
它包含变量。一个变量在任何时候都会生成一个数字。它可以用作独立特征或中间值来计算特征。
"variables": [
["Zero", ["Const", {"value": 0.0}]]
]
*models *
它包含模型。模型是从一个或多个变量生成的值。它的值代表预测的远期回报,并由 ModelStrategy 使用。
"models": [
["Zero_m", ["LinearModel", {"variable": "Zero"}]]
]
strategies
它包含策略。策略实现交易品种的执行逻辑。它受时间和市场事件的驱动,根据模型值和其他信息做出下单/取消决策。
"strategies":[
["BTCUSDTSWAP.OKEX_SWAP",[
"SimpleTakerStrategy",{
"symbol":"BTCUSDTSWAP",
"trade_market":"OKEX_SWAP",
"order_size":0.0001,
"signal":"BTCUSDTSWAP.OKEX_SWAP_trend30"
} ]]
]