框架启动的时候,需要指定一个 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
stringhttp代理,解决翻墙问题
注意: 此配置为全局配置,将作用到任何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:
intorderbook队列的最大长度 - klines_length:
intklines队列的最大长度 - trades_length:
inttrades队列的最大长度 - wss:
stringwss行情订阅地址
在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策略名字