基本概念¶
接口¶
我们将重要模块进行了抽离,使得通过 Mod 来替换核心组件成为了可能。
策略加载模块(AbstractStrategyLoader): 加载策略,并将策略运行所需要的域环境传递给策略执行代码,可以通过扩展策略加载器来实现自定义策略源、自定义API载入等功能。
事件生成模块(AbstractEventSource): 无论是回测还是实盘,都需要基于数据源生成对应的事件,而事件生成模块主要负责生成策略执行相应的事件。
数据源模块(AbstractDataSource): 日线数据、分钟线数据、财务数据、债务数据等等都可以通过该模块进行扩展和使用。
券商代理模块(AbstractBroker): 用户的所有下单、账户、撮合逻辑其实都来自于券商+交易所,即使是回测,也实际是一个回测模拟交易所。因此可以通过扩展该模块来自定义Broker,也可以通过该模块扩展实盘交易等。
Mod¶
Position¶
-
class
rqalpha.interface.
AbstractPosition
[源代码]¶ 仓位接口,主要用于构建仓位信息
您可以在 Mod 的 start_up 阶段通过 Portfolio.register_instrument_type 来注册 Position 类型
-
abstract property
closable
¶ 返回可平仓位
- 返回类型
Union
[int
,float
]
-
property
direction
¶ 返回当前持仓的方向
- 返回类型
-
abstract property
market_value
¶ 返回当前持仓的市值
- 返回类型
Union
[int
,float
]
-
abstract property
order_book_id
¶ 返回当前持仓的 order_book_id
- 返回类型
str
-
abstract property
position_pnl
¶ 返回当前持仓当日的持仓盈亏
- 返回类型
Union
[int
,float
]
-
abstract property
quantity
¶ 返回当前持仓量
- 返回类型
Union
[int
,float
]
-
abstract property
today_closable
¶ 返回今仓中的可平仓位
- 返回类型
Union
[int
,float
]
-
abstract property
trading_pnl
¶ 返回当前持仓当日的交易盈亏
- 返回类型
Union
[int
,float
]
-
abstract property
StrategyLoader¶
EventSource¶
-
class
rqalpha.interface.
AbstractEventSource
[源代码]¶ 事件源接口。RQAlpha 从此对象中获取事件,驱动整个事件循环。
在扩展模块中,可以通过调用
env.set_event_source
来替换默认的事件源。-
abstract
events
(start_date, end_date, frequency)[源代码]¶ [Required]
扩展 EventSource 必须实现 events 函数。
events 是一个 event generator, 在相应事件的时候需要以如下格式来传递事件
yield trading_datetime, calendar_datetime, EventEnum
其中 trading_datetime 为基于交易日的 datetime, calendar_datetime 为基于自然日的 datetime (因为夜盘的存在,交易日和自然日未必相同)
EventEnum 为
Events
- 参数
start_date (datetime.date) – 起始日期, 系统会将 config.base.start_date 传递 events 函数
end_date (datetime.date) – 结束日期,系统会将 config.base.end_date 传递给 events 函数
frequency (str) – 周期频率,1d 表示日周期, 1m 表示分钟周期
- 返回
None
-
abstract
DataSource¶
-
class
rqalpha.interface.
AbstractDataSource
[源代码]¶ 数据源接口。RQAlpha 中通过
DataProxy
进一步进行了封装,向上层提供更易用的接口。在扩展模块中,可以通过调用
env.set_data_source
来替换默认的数据源。可参考BaseDataSource
。-
available_data_range
(frequency)[源代码]¶ 此数据源能提供数据的时间范围
- 参数
frequency (str) – 周期频率,1d 表示日周期, 1m 表示分钟周期
- 返回
(earliest, latest)
-
current_snapshot
(instrument, frequency, dt)[源代码]¶ 获得当前市场快照数据。只能在日内交易阶段调用,获取当日调用时点的市场快照数据。 市场快照数据记录了每日从开盘到当前的数据信息,可以理解为一个动态的day bar数据。 在目前分钟回测中,快照数据为当日所有分钟线累积而成,一般情况下,最后一个分钟线获取到的快照数据应当与当日的日线行情保持一致。 需要注意,在实盘模拟中,该函数返回的是调用当时的市场快照情况,所以在同一个handle_bar中不同时点调用可能返回的数据不同。 如果当日截止到调用时候对应股票没有任何成交,那么snapshot中的close, high, low, last几个价格水平都将以0表示。
- 参数
instrument (
Instrument
) – 合约对象frequency (str) – 周期频率,1d 表示日周期, 1m 表示分钟周期
dt (datetime.datetime) – 时间
- 返回
Snapshot
-
get_bar
(instrument, dt, frequency)[源代码]¶ 根据 dt 来获取对应的 Bar 数据
- 参数
instrument (
Instrument
) – 合约对象dt (datetime.datetime) – calendar_datetime
frequency (str) – 周期频率,1d 表示日周期, 1m 表示分钟周期
- 返回
numpy.ndarray | dict
-
get_instruments
(id_or_syms=None, types=None)[源代码]¶ 获取 instrument, 可指定 order_book_id 或 symbol 或 instrument type,id_or_syms 优先级高于 types, id_or_syms 和 types 均为 None 时返回全部 instruments
- 返回类型
Iterable
[Instrument
]
-
get_merge_ticks
(order_book_id_list, trading_date, last_dt=None)[源代码]¶ 获取合并的 ticks
- 参数
order_book_id_list (list) – 合约名列表
trading_date (datetime.date) – 交易日
last_dt (datetime.datetime) – 仅返回 last_dt 之后的时间
- 返回
Iterable object of Tick
-
get_open_auction_bar
(instrument, dt)[源代码]¶ - 获取指定资产当日的集合竞价 Bar 数据,该 Bar 数据应包含的字段有:
datetime, open, limit_up, limit_down, volume, total_turnover
- 返回类型
Dict
-
get_settle_price
(instrument, date)[源代码]¶ 获取期货品种在 date 的结算价
- 参数
instrument (
Instrument
) – 合约对象date (datetime.date) – 结算日期
- 返回
str
获取股票转换信息 :param order_book_id: 合约代码 :return: (successor, conversion_ratio), (转换后的合约代码,换股倍率)
-
get_trading_calendars
()[源代码]¶ 获取交易日历,DataSource 应返回所有支持的交易日历种类
- 返回类型
Dict
[TRADING_CALENDAR_TYPE
,DatetimeIndex
]
-
get_trading_minutes_for
(instrument, trading_dt)[源代码]¶ 获取证券某天的交易时段,用于期货回测
- 参数
instrument (
Instrument
) – 合约对象trading_dt (datetime.datetime) – 交易日。注意期货夜盘所属交易日规则。
- 返回
list[datetime.datetime]
-
get_yield_curve
(start_date, end_date, tenor=None)[源代码]¶ 获取国债利率
- 参数
str start_date (pandas.Timestamp) – 开始日期
end_date (pandas.Timestamp) – 结束日期
tenor (str) – 利率期限
- 返回
pandas.DataFrame, [start_date, end_date]
-
history_bars
(instrument, bar_count, frequency, fields, dt, skip_suspended=True, include_now=False, adjust_type='pre', adjust_orig=None)[源代码]¶ 获取历史数据
- 参数
instrument (
Instrument
) – 合约对象bar_count (int) – 获取的历史数据数量
frequency (str) – 周期频率,1d 表示日周期, 1m 表示分钟周期
fields (str) – 返回数据字段
fields
字段名
datetime
时间戳
open
开盘价
high
最高价
low
最低价
close
收盘价
volume
成交量
total_turnover
成交额
datetime
int类型时间戳
open_interest
持仓量(期货专用)
basis_spread
期现差(股指期货专用)
settlement
结算价(期货日线专用)
prev_settlement
结算价(期货日线专用)
- 参数
dt (datetime.datetime) – 时间
skip_suspended (bool) – 是否跳过停牌日
include_now (bool) – 是否包含当天最新数据
adjust_type (str) – 复权类型,’pre’, ‘none’, ‘post’
adjust_orig (datetime.datetime) – 复权起点;
- 返回
Optional[numpy.ndarray], fields 不合法时返回 None
-
history_ticks
(instrument, count, dt)[源代码]¶ 获取指定合约历史 tick 对象
- 参数
instrument (
Instrument
) – 合约对象count (int) – 获取的 tick 数量
dt (
datetime
) – 时间
- 返回类型
List
[TickObject
]
-