交易管理
交易管理可理解为一个模拟账户进行模拟交易。一般使用 crtTM 创建交易管理实例。
公共参数:
precision=2 (int) : 价格计算精度
support_borrow_cash=False (bool) : 是否自动融资
support_borrow_stock=False (bool) : 是否自动融券
save_action=True (bool) : 是否保存 Python 命令序列
- hikyuu.trade_manage.crtTM([date=Datetime(199001010000), init_cash=100000, cost_func=TC_Zero(), name="SYS"])
创建交易管理模块,管理帐户的交易记录及资金使用情况
- 参数:
date (Datetime) -- 账户建立日期
init_cash (float) -- 初始资金
cost_func (TradeCost) -- 交易成本算法
name (string) -- 账户名称
- 返回类型:
- class hikyuu.trade_manage.TradeManager
交易管理类,可理解为一个模拟账户进行模拟交易。一般使用 crtTM 创建交易管理实例。
- name
名称
- cost_func
交易成本算法
- init_cash
(只读)初始资金
- current_cash
(只读)当前资金
- init_datetime
(只读)账户建立日期
- first_datetime
(只读)第一笔买入交易发生日期,如未发生交易返回 Datetime()
- last_datetime
(只读)最后一笔交易日期,注意和交易类型无关,如未发生交易返回账户建立日期
- precision
(只读)价格精度,同公共参数"precision"
- broker_last_datetime
实际开始订单代理操作的时刻。
默认情况下,TradeManager 会在执行买入/卖出操作时,调用订单代理执行代理的买入/卖出动作,但这样在实盘操作时会存在问题。因为系统在计算信号指示时,需要回溯历史数据才能得到最新的信号,这样 TradeManager 会在历史时刻就执行买入/卖出操作,此时如果订单代理本身没有对发出买入/卖出指令的时刻进行控制,会导致代理发送错误的指令。此时,需要指定在某一个时刻之后,才允许指定订单代理的买入/卖出操作。属性 brokeLastDatetime 即用于指定该时刻。
- __init__()
初始化构造函数
- get_param(self, name)
获取指定的参数
- 参数:
name (str) -- 参数名称
- 返回:
参数值
- 抛出:
out_of_range -- 无此参数
- set_param(self, name, value)
设置参数
- 参数:
name (str) -- 参数名称
value (int | bool | float | string | Query | KData | Stock | DatetimeList) -- 参数值
- 抛出:
logic_error -- Unsupported type! 不支持的参数类型
- have_param(self, name)
检查是否存在指定参数
- 参数:
name (str) -- 参数名称
- 返回类型:
bool
- reset(self)
复位,清空交易、持仓记录
- clone(self)
克隆(深复制)实例
- 返回类型:
- checkin(self, datetime, cash)
向账户内存入现金
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 存入的现金量
- 返回类型:
- checkout(self, datetime, cash)
从账户内取出现金
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 取出的资金量
- 返回类型:
- checkin_stock(self, datetime, stock, price, number)
存入股票资产
- 参数:
- 返回类型:
- checkout_stock(self, datetime, stock, price, number)
取出股票资产
- 参数:
- 返回类型:
- borrow_cash(self, datetime, cash)
借入资金(融资)
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 借入的现金额
- 返回类型:
- return_cash(self, datetime, cash)
归还借入的资金
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 归还的现金额
- 返回类型:
- borrow_stock(self, datetime, stock, price, number)
借入股票(融券)
- 参数:
- 返回类型:
- return_stock(self, datetime, stock, price, number)
归还借入的股票
- 参数:
- 返回类型:
- buy(self, datetime, stock, real_price, number[, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID, remark=""])
买入操作
- 参数:
- 返回类型:
- sell(self, datetime, stock, real_price[, number=constant.max_double, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID, remark=""])
卖出操作
- 参数:
- 返回类型:
- buy_short(self, datetime, stock, real_price, number[, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID, remark=""])
卖空操作(先卖后买)
- 参数:
- 返回类型:
- sell_short(self, datetime, stock, real_price[, number=constant.max_double, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID, remark=""])
卖空回补操作(买回平仓)
- 参数:
- 返回类型:
- cash(self, datetime[, ktype=Query.KType.DAY])
获取指定日期的现金。(注:如果不带日期参数,无法根据权息信息调整持仓。)
- 参数:
datetime (Datetime) -- 指定时刻
ktype -- K 线类型
- 返回类型:
float
- get_stock_num(self)
当前持有的证券种类数量,即当前持有几只股票(非各个股票的持仓数)
- 返回类型:
int
- get_short_stock_num(self)
当前空头持有的证券种类数量
- 返回类型:
int
- get_hold_num(self, datetime, stock)
获取指定时刻指定证券的多头持有数量
- get_short_hold_num(self, datetime, stock)
获取指定时刻指定证券的空头持有数量
- get_debt_number(self, datetime, stock)
获取指定时刻已借入的股票数量
- get_position(self, date, stock)
获取指定时间证券持仓记录,如当前未持有该票,返回 PositionRecord()
- 参数:
- 返回类型:
- get_short_position(self, stock)
获取指定证券的当前空头仓位持仓记录,如当前未持有该票,返回 PositionRecord()
- 参数:
stock (Stock) -- 指定的证券
- 返回类型:
- get_position_list(self)
获取当前全部持仓记录(多头)
- 返回类型:
- get_positions(self)
以字典方式获取当前全部持仓记录,stock 为 key,PositionRecord 为 value
- 返回类型:
dict
- get_history_position_list(self)
获取全部历史持仓记录,即已平仓记录(多头)
- 返回类型:
- get_short_position_list(self)
获取当前全部空头仓位记录
- 返回类型:
- get_short_history_position_list(self)
获取全部空头历史持仓记录
- 返回类型:
- get_borrow_stock_list(self)
获取当前借入的股票列表
- 返回类型:
BorrowRecordList
- get_trade_list(self[, start, end])
获取交易记录,未指定参数时,获取全部交易记录
- 参数:
- 返回类型:
- get_buy_cost(self, datetime, stock, price, num)
计算买入成本
- 参数:
- 返回类型:
- get_sell_cost(self, datetime, stock, price, num)
计算卖出成本
- 参数:
- 返回类型:
- get_borrow_cash_cost(self, datetime, cash)
计算借入资金的成本
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 借入的现金额
- 返回类型:
- get_return_cash_cost(self, datetime, cash)
计算归还借入资金的成本
- 参数:
datetime (Datetime) -- 交易时间
cash (float) -- 归还的现金额
- 返回类型:
- get_borrow_stock_cost(self, datetime, stock, price, num)
计算借入股票的成本
- 参数:
- 返回类型:
- get_return_stock_cost(self, datetime, stock, price, num)
计算归还借入股票的成本
- 参数:
- 返回类型:
- get_funds(self[, ktype=Query.DAY])
获取指定时刻的资产市值详情
方式1:get_funds(self[, ktype = Query.DAY])
方式2:get_funds(self, datetime[, ktype = Query.DAY])
get_funds(self, datetime[, ktype = Query.DAY]) 获取指定时刻的资产市值详情
- 参数:
ktype (Query.KType) -- K 线类型
- 返回类型:
- get_funds_list(self, dates[, ktype=Query.DAY])
获取指定日期列表的每日资产记录
- 参数:
dates (DatetimeList) -- 日期列表
ktype (Query.KType) -- K 线类型
- 返回类型:
FundsList
- get_funds_curve(self, dates[, ktype=Query.DAY])
获取资产净值曲线
- 参数:
dates (DatetimeList) -- 日期列表,根据该日期列表获取其对应的资产净值曲线
ktype (Query.KType) -- K 线类型,必须与日期列表匹配
- 返回:
资产净值列表
- 返回类型:
- get_profit_curve(self, dates[, ktype=Query.DAY])
获取收益曲线,即扣除历次存入资金后的资产净值曲线
- 参数:
dates (DatetimeList) -- 日期列表,根据该日期列表获取其对应的收益曲线,应为递增顺序
ktype (Query.KType) -- K 线类型,必须与日期列表匹配
- 返回:
收益曲线
- 返回类型:
- get_profit_cum_change_curve(self, dates[, ktype=Query.DAY])
获取累积收益率曲线
- 参数:
dates (DatetimeList) -- 日期列表
ktype (Query.KType) -- K 线类型,必须与日期列表匹配
- 返回类型:
- get_base_assets_curve(self, dates[, ktype=Query.DAY])
获取投入本值资产曲线(投入本钱)
- 参数:
dates (DatetimeList) -- 日期列表
ktype (Query.KType) -- K 线类型,必须与日期列表匹配
- 返回类型:
- add_trade_record(self, tr)
直接加入交易记录,如果加入初始化账户记录,将清除全部已有交易及持仓记录。
- 参数:
tr (TradeRecord) -- 交易记录
- 返回:
True(成功) | False(失败)
- 返回类型:
bool
- add_position(self, position)
建立初始账户后,直接加入持仓记录,仅用于构建初始有持仓的账户
- 参数:
position (PositionRecord) -- 持仓记录
- 返回:
True | False
- 返回类型:
bool
- tocsv(self, path)
以 csv 格式输出交易记录、未平仓记录、已平仓记录、资产净值曲线
- 参数:
path (str) -- 输出文件所在目录
- reg_broker(self, broker)
注册订单代理。可执行多次该命令注册多个订单代理。
- 参数:
broker (OrderBrokerBase) -- 订单代理实例
- clear_broker(self)
清空所有已注册订单代理
- get_margin_rate(self, datetime, stock)
获取指定对象的保证金比率
- fetch_asset_info_from_broker(self, broker[, date=Datetime.now()])
从 Broker 同步当前时刻的资产信息,必须按时间顺序被调用
- 参数:
broker (OrderBrokerBase) -- 订单代理实例
date (Datetime) -- 同步时,通常为当前时间(Null),也可以强制为指定的时间点
- get_performance(self[, datetime=Datetime.now(), ktype=Query.DAY, ext=False]) Performance
获取账户指定时刻的账户表现
- 参数:
datetime (Datetime) -- 指定时刻
ktype (Query.KType) -- K 线类型
ext (bool) -- 是否获取扩展统计项 (需 捐赠用户 权限),否则仅为基础统计项
- 返回:
账户表现
- 返回类型:
- get_max_pull_back(self, date, ktype=Query.DAY) float
获取指定时刻时账户的最大回撤百分比(负数)
- 参数:
date (Datetime) -- 指定日期(包含该时刻)
ktype (Query.KType) -- k 线类型
- 返回:
最大回撤百分比
- get_position_ext_info_list(self, current_time, ktype=Query.DAY, trade_mode=0) list[PositionExtInfo]
获取账户最后交易时刻之后指定时间的持仓详情(未平常记录)
- 参数:
current_time (Datetime) -- 当前时刻(需大于等于最后交易时刻)
ktype (Query.KType) -- k 线类型
trade_mode (int) -- 交易模式,影响部分统计项:0-收盘时交易,1-下一开盘时交易
- 返回:
持仓扩展详情列表
- get_position_ext_info(self, stock, current_time, ktype=Query.DAY, trade_mode=0) PositionExtInfo
获取账户指定时刻的扩展持仓详情(仅针对指定股票)
- 参数:
stock (Stock) -- 指定股票
current_time (Datetime) -- 当前时刻(需大于等于最后交易时刻)
ktype (Query.KType) -- K 线类型,默认日线
trade_mode (int) -- 交易模式,影响部分统计项:0-收盘时交易,1-下一开盘时交易,默认 0
- 返回:
扩展持仓详情,包含以下字段:
position (PositionRecord): 基础持仓记录
max_high_price (float): 期间最高价最大值
min_low_price (float): 期间最低价最小值
max_close_price (float): 期间收盘价最高值
min_close_price (float): 期间收盘价最低值
current_close_price (float): 当前收盘价
max_pull_back1 (float): 最大回撤百分比 1(仅使用最大收盘价和最低收盘价计算)(负数)
max_pull_back2 (float): 最大回撤百分比 2(使用期间最高价最大值和最低价最小值计算)(负数)
current_profit (float): 当前浮动盈亏(不含预计卖出成本)
以及以下计算方法:
current_pull_back1(): 当前回撤百分比 1(仅使用最大收盘价和当前收盘价计算)
current_pull_back2(): 当前回撤百分比 2(使用期间最高价最大值和当前收盘价计算)
max_floating_profit1(): 期间最大浮盈百分比 1(仅使用收盘价计算,不含预计卖出成本,多次买卖时统计不准)
max_floating_profit2(): 期间最大浮盈百分比 2(使用最高价最大值进行计算,不含预计卖出成本,多次买卖时统计不准)
min_loss_profit1(): 期间最大浮亏百分比 1(仅使用收盘价计算,不含预计卖出成本,多次买卖时统计不准)
min_loss_profit2(): 期间最大浮亏百分比 2(仅使用期间最低价计算,不含预计卖出成本,多次买卖时统计不准)
- Note:
该功能只适合一买一卖的情况,对于一买多卖的情况,部分统计可能不准确,仅供参考
- get_history_position_ext_info_list(self, ktype=Query.DAY, trade_mode=0) list[PositionExtInfo]
获取账户历史持仓扩展详情(已平仓记录)
- 参数:
ktype (Query.KType) -- k 线类型
trade_mode (int) -- 交易模式,影响部分统计项:0-收盘时交易,1-下一开盘时交易
- 返回:
持仓扩展详情列表