框架启动的时候,需要指定一个 json
格式的配置文件。
所有 config.json
配置文件里的 key-value
格式数据,都可以通过如下方式使用:
from alpha.config import config
config.name # 使用配置里的name字段
config.abc # 使用配置里的abc字段
所有系统配置参数均为
大写字母
为key;
所有系统配置参数均为可选
;
日志配置。包含如下配置:
示例:
{
"LOG": {
"console": false,
"level": "DEBUG",
"path": "/var/log/servers/Quant",
"name": "quant.log",
"clear": true,
"backup_count": 5
}
}
配置说明:
- console
boolean
是否打印到控制台,true 打印到控制台
/false 打印到文件
,可选,默认为true
- level
string
日志打印级别DEBUG
/INFO
,可选,默认为DEBUG
- path
string
日志存储路径,可选,默认为/var/log/servers/Quant
- name
string
日志文件名,可选,默认为quant.log
- clear
boolean
初始化的时候,是否清理之前的日志文件,true 清理
/false 不清理
,可选,默认为false
- backup_count
int
保存按天分割的日志文件个数,默认0为永久保存所有日志文件,可选,默认为0
服务心跳配置。
示例:
{
"HEARTBEAT": {
"interval": 3,
"broadcast": 0
}
}
配置说明:
- interval
int
心跳打印时间间隔(秒),0为不打印可选,默认为0
- broadcast
int
心跳广播时间间隔(秒),0为不广播可选,默认为0
HTTP代理配置。 大部分交易所在国内访问都需要翻墙,所以在国内环境需要配置HTTP代理。
示例:
{
"PROXY": "http://127.0.0.1:1087"
}
配置说明:
- PROXY
string
http代理,解决翻墙问题
注意: 此配置为全局配置,将作用到任何HTTP请求,包括Websocket;
MARKET行情配置。
示例:
"MARKETS": [
{
"platform": "huobi_swap",
"symbols": ["BTC-USD"],
"channels":[
"orderbook", "kline", "trade"
],
"orderbook_length": 10,
"orderbooks_length": 100,
"klines_length": 100,
"trades_length": 100,
"wss": "wss://api.btcgateway.pro"
}
]
配置说明:
- platform:
string
平台名 - channels:
list
订阅的频道比如orderbook, kline, trade - symbols:
list
订阅的交易对 - orderbook_length:
int
推送的orderbook的最大长度 - orderbooks_length:
int
orderbook队列的最大长度 - klines_length:
int
klines队列的最大长度 - trades_length:
int
trades队列的最大长度 - wss:
string
wss行情订阅地址
在config.json中加入mongodb配置
"MONGODB": {
"host": "127.0.0.1",
"port": 27017,
"username": "root",
"password": "root"
}
使用例子:
from alpha.utils import mongo
async def on_event_kline_update(self, kline: Kline):
""" 订单薄更新
"""
logger.debug("kline:", kline, caller=self)
result = await mongo.MongoDBBase('quant', 'kline').find_one_and_update({'platform': kline.platform, 'symbol': kline.symbol, \
'timestamp': kline.timestamp, 'kline_type': kline.kline_type}, {'$set': {'open': kline.open, 'high': kline.high, \
'close': kline.close, 'low': kline.low, 'volume': kline.volume, 'amount': kline.amount}}, upsert=True, return_document=True)
if not result:
logger.error("insert mongo error ", kline.platform+kline.symbol, kline, result)
logger.debug("insert mongo success: ", result)
from alpha.utils.dingding import DingTalk
msg = "DingDing Alarm"
dingding_access_token = "xxxxxx"
await DingTalk.send_text_msg(dingding_access_token, msg)
- SERVER_ID
string
策略实例标示 - strategy
string
策略名字