数字货币#
回测平台支持的数字货币行情数据类型包括:快照,分钟频率,日频等。
数字货币引擎支持单个引擎中同时管理现货和期货的多个账户,其使用方式与单账户引擎有所不同。多账户设计遵循以下原则:
数字货币行情中可以存在不同的合约类型,
on_bar回调会一次性提供对应时间段内所有合约类型的数据,便于用户根据不同合约的行情设计策略。回测币种接口支持
Account来指定要操作的账户。
引擎配置说明#
key |
说明 |
备注 |
|---|---|---|
"start_data" |
开始日期 |
DATE 类型,必填(例如 “2020.01.01”) |
"end_data" |
结束日期 |
DATE 类型,必填(例如 “2020.01.01”) |
"asset_type" |
策略分组 |
必须为 “cryptocurrency” |
"cash" |
每个账户的初始资金(字典类型){“spot”: 100000.“futures”: 100000.“option”: 100000.} |
DOUBLE 类型,必填。
|
"data_type" |
市场数据类型 |
INT 类型,必填。
|
"msg_as_table" |
将行情数据处理为表格或字典 |
BOOL 类型。
|
"matchingMode" |
撮合模式 |
INT 类型。
以委托价格成交 |
"bench_mark" |
基准标的 |
STRING 或 SYMBOL 类型 |
"latency" |
从订单提交到执行的延迟 |
DOUBLE 类型,单位毫秒 |
"funding_rate" |
永续合约资金费率 |
TABLE 类型,字段说明见下表 |
"enable_indicator_optimize" |
是否启用指标计算优化 |
|
"add_time_column_in_indicator" |
指标订阅结果是否增加时间列 |
|
"is_backtest_mode" |
是否为回测模式 |
|
"data_retention_window" |
指标优化的数据保留策略 |
STRING 或 INT 类型,仅在 enable_indicator_optimize = true 且 is_backtest_mode = true 时生效:
|
"context" |
策略上下文结构 |
包含全局策略变量的字典,例如: |
"orderbook_matching_ratio" |
订单实际成交比例 |
DOUBLE 类型,默认 1.0,取值范围 0~1.0。 |
"matching_ratio" |
价位区间内撮合比例 |
DOUBLE 类型,取值范围 0~1.0,默认等于 orderbook_matching_ratio。 |
注意:不同的数字货币行情类型(data_type)的引擎配置参数有所差异:
与行情订单薄的成交百分比 “orderbook_matching_ratio。” 以及区间撮合比例 “matching_ratio” 只有在含快照的行情类型中可以设置,即 data_type = 1 或 2。
永续合约资金费率表 “funding_rate”:
字段 |
类型 |
备注 |
|---|---|---|
symbol |
STRING 或 SYMBOL |
合约 |
settlementTime |
TIMESTAMP |
结算时间 |
lastFundingRate |
DECIMAL128(8) |
结算费率 |
基本信息表说明#
字段 |
类型 |
备注 |
|---|---|---|
symbol |
SYMBOL 或 STRING |
品种代码 |
contractType |
INT |
合约类型:
|
optType |
INT |
期权类型
|
strikePrice |
DECIMAL128(8) |
行权价 |
contractSize |
DECIMAL128(8) |
合约乘数 |
marginRatio |
DECIMAL128(8) |
保证金比例 |
tradeUnit |
DECIMAL128(8) |
合约单位 |
priceUnit |
DECIMAL128(8) |
报价单位 |
priceTick |
DECIMAL128(8) |
价格最小变动单位 |
takerRate |
DECIMAL128(8) |
吃单手续费 |
makerRate |
DECIMAL128(8) |
挂单手续费 |
deliveryCommissionMode |
INT |
指定交易执行时交易费用的计算方式:
|
fundingSettlementMode |
INT |
定义永续合约多头和空头头寸之间的资金费用如何结算:
|
lastTradeTime |
TIMESTAMP |
最后交易时间 |
注:
费用计算,每个品种相应的保证金、费用等不一致
若品种类型为永续合约时,持仓费用计算还需参考配置的永续合约资金费率表
快照#
行情数据结构说明#
通过 append_data 向引擎中插入数据时,msg 结构:
col_type = {
"symbol": "STRING", "symbolSource": "STRING", "timestamp": "TIMESTAMP", "tradingDay": "DATE",
"lastPrice": "DECIMAL128(8)", "upLimitPrice": "DECIMAL128(8)", "downLimitPrice": "DECIMAL128(8)",
"totalBidQty": "DECIMAL128(8)", "totalOfferQty": "DECIMAL128(8)", "bidPrice": "DECIMAL128(8)[]",
"bidQty": "DECIMAL128(8)[]", "offerPrice": "DECIMAL128(8)[]", "offerQty": "DECIMAL128(8)[]",
"highPrice": "DECIMAL128(8)", "lowPrice": "DECIMAL128(8)", "prevClosePrice": "DECIMAL128(8)",
"settlementPrice": "DECIMAL128(8)", "prevSettlementPrice": "DECIMAL128(8)", "contractType": "INT"
}
message_table = sf.streaming.table(types=col_type, size=0, capacity=10000000)
快照行情数据表结构:
字段 |
类型 |
备注 |
|---|---|---|
symbol |
STRING |
品种代码 |
symbolSource |
STRING |
交易所 |
timestamp |
TIMESTAMP |
时间戳 |
tradingDay |
DATE |
交易日/结算日期 |
lastPrice |
DECIMAL128(8) |
最新成交价 |
upLimitPrice |
DECIMAL128(8) |
涨停价 |
downLimitPrice |
DECIMAL128(8) |
跌停价 |
totalBidQty |
DECIMAL128(8) |
区间成交买数量 |
totalOfferQty |
DECIMAL128(8) |
区间成交卖数量 |
bidPrice |
DECIMAL128(8)[] |
委托买价 |
bidQty |
DECIMAL128(8)[] |
委托买量 |
offerPrice |
DECIMAL128(8)[] |
委托卖价 |
offerQty |
DECIMAL128(8)[] |
委托卖量 |
highPrice |
DECIMAL128(8) |
最高价 |
lowPrice |
DECIMAL128(8) |
最低价 |
signal |
DOUBLE[] |
其他字段列表 |
prevClosePrice |
DECIMAL128(8) |
前收盘价 |
settlementPrice |
DECIMAL128(8) |
结算价 |
prevSettlementPrice |
DECIMAL128(8) |
前结算价 |
contractType |
INT |
合约类型:
|
注:不同品种类型对应的基本信息表说明见本节最后一栏。
回测行情回放结束时,发送一条 symbol 为 “END” 的消息:
message_table = sf.sql("SELECT TOP 1 * FROM messageTable", vars={'messageTable': message_table})
sf.sql("UPDATE messageTable set symbol=END", vars={'messageTable': message_table})
backtester.append_data(message_table)
策略回调函数说明#
快照行情回调函数 on_snapshot:输入参数 msg
msg 为字典时,是 symbol 为 key 值的 snapShot 数据字典,每个 snapShot 对象包含字段如下:
字段 |
类型 |
备注 |
|---|---|---|
symbol |
STRING |
品种代码 |
symbolSource |
STRING |
交易所 |
timestamp |
TIMESTAMP |
时间戳 |
tradingDay |
DATE |
交易日/结算日期 |
lastPrice |
DECIMAL128(8) |
最新成交价 |
upLimitPrice |
DECIMAL128(8) |
涨停价 |
downLimitPrice |
DECIMAL128(8) |
跌停价 |
totalBidQty |
DECIMAL128(8) |
区间成交买数量 |
totalOfferQty |
DECIMAL128(8) |
区间成交卖数量 |
bidPrice |
DECIMAL128(8)[] |
委托买价 |
bidQty |
DECIMAL128(8)[] |
委托买量 |
offerPrice |
DECIMAL128(8)[] |
委托卖价 |
offerQty |
DECIMAL128(8)[] |
委托卖量 |
highPrice |
DECIMAL128(8) |
最高价 |
lowPrice |
DECIMAL128(8) |
最低价 |
signal |
DOUBLE[] |
其他字段列表 |
prevClosePrice |
DECIMAL128(8) |
前收盘价 |
settlementPrice |
DECIMAL128(8) |
结算价 |
prevSettlementPrice |
DECIMAL128(8) |
前结算价 |
contractType |
INT |
合约类型:
|
分钟频率或日频#
行情数据结构说明#
通过接口 append_data 向引擎中插入数据时,msg 结构:
col_type = {
"symbol": "SYMBOL", "symbolSource": "SYMBOL", "tradeTime": "TIMESTAMP", "tradingDay": "DATE",
"open": "DECIMAL128(8)", "low": "DECIMAL128(8)", "high": "DECIMAL128(8)", "close": "DECIMAL128(8)",
"volume": "DECIMAL128(8)", "amount": "DECIMAL128(8)", "upLimitPrice": "DECIMAL128(8)",
"downLimitPrice": "DECIMAL128(8)", "prevClosePrice": "DECIMAL128(8)", "settlementPrice": "DECIMAL128(8)",
"prevSettlementPrice": "DECIMAL128(8)", "contractType": "INT"
}
message_table = sf.streaming.table(types=col_type, size=0, capacity=10000000)
分钟频行情数据表结构:
字段 |
类型 |
备注 |
|---|---|---|
symbol |
SYMBOL |
品种代码 |
symbolSource |
SYMBOL |
交易所 |
tradeTime |
TIMESTAMP |
时间戳 |
tradingDay |
DATE |
交易日/结算日期 |
open |
DECIMAL128(8) |
开盘价 |
low |
DECIMAL128(8) |
最低价 |
high |
DECIMAL128(8) |
最高价 |
close |
DECIMAL128(8) |
收盘价 |
volume |
DECIMAL128(8) |
成交量 |
amount |
DECIMAL128(8) |
成交金额 |
upLimitPrice |
DECIMAL128(8) |
涨停价 |
downLimitPrice |
DECIMAL128(8) |
跌停价 |
signal |
DOUBLE[] |
其他字段列表 |
prevClosePrice |
DECIMAL128(8) |
前收盘价 |
settlementPrice |
DECIMAL128(8) |
结算价 |
prevSettlementPrice |
DECIMAL128(8) |
前结算价 |
contractType |
INT |
合约类型:
|
注:不同品种类型对应的基本信息表说明见本节最后一栏。
回测行情回放结束时,发送一条 symbol 为 “END” 的消息:
message_table = sf.sql("SELECT TOP 1 * FROM messageTable", vars={'messageTable': message_table})
sf.sql("UPDATE messageTable SET symbol='END'", vars={'messageTable': message_table})
backtester.append_data(message_table)
策略回调函数说明#
k 线行情回调函数 on_bar:输入参数 msg
msg 是字典时,是 以 symbol 为 key 值的分钟频率的 K 线数据字典,每个 K 线包含字段如下:
字段 |
类型 |
备注 |
|---|---|---|
symbol |
SYMBOL |
品种代码 |
symbolSource |
SYMBOL |
交易所 |
tradeTime |
TIMESTAMP |
时间戳 |
tradingDay |
DATE |
交易日/结算日期 |
open |
DECIMAL128(8) |
开盘价 |
low |
DECIMAL128(8) |
最低价 |
high |
DECIMAL128(8) |
最高价 |
close |
DECIMAL128(8) |
收盘价 |
volume |
DECIMAL128(8) |
成交量 |
amount |
DECIMAL128(8) |
成交金额 |
upLimitPrice |
DECIMAL128(8) |
涨停价 |
downLimitPrice |
DECIMAL128(8) |
跌停价 |
signal |
DOUBLE[] |
其他字段列表 |
prevClosePrice |
DECIMAL128(8) |
前收盘价 |
settlementPrice |
DECIMAL128(8) |
结算价 |
prevSettlementPrice |
DECIMAL128(8) |
前结算价 |
contractType |
INT |
合约类型:
|