交易管理¶
交易管理可理解为一个模拟账户进行模拟交易。一般使用 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) – 参数值
引发: logic_error – Unsupported type! 不支持的参数类型
-
reset
(self)¶ 复位,清空交易、持仓记录
-
clone
(self)¶ 克隆(深复制)实例
返回类型: TradeManager
-
buy
(self, datetime, stock, real_price, number[, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID])¶ 买入操作
参数: 返回类型:
-
sell
(self, datetime, stock, real_price[, number=constant.max_double, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID])¶ 卖出操作
参数: 返回类型:
-
cash
(self, datetime[, ktype=Query.KType.DAY])¶ 获取指定日期的现金。(注:如果不带日期参数,无法根据权息信息调整持仓。)
参数: - datetime (Datetime) – 指定时刻
- ktype – K线类型
返回类型: float
-
get_stock_num
(self)¶ 当前持有的证券种类数量,即当前持有几只股票(非各个股票的持仓数)
返回类型: int
-
get_hold_num
(self, datetime, stock)¶ 获取指定时刻指定证券的持有数量
参数: 返回类型: int
-
get_position
(self, date, stock)¶ 获取指定时间证券持仓记录,如当前未持有该票,返回PositionRecord()
参数: 返回类型:
-
get_trade_list
(self[, start, end])¶ 获取交易记录,未指定参数时,获取全部交易记录
参数: 返回类型:
-
get_position_list
(self)¶ 获取当前全部持仓记录
返回类型: PositionRecordList
-
get_history_position_list
(self)¶ 获取全部历史持仓记录,即已平仓记录
返回类型: PositionRecordList
-
get_buy_cost
(self, datetime, stock, price, num)¶ 计算买入成本
参数: 返回类型:
-
get_sell_cost
(self, datetime, stock, price, num)¶ 计算卖出成本
参数: 返回类型:
-
get_funds
(self, datetime[, ktype = Query.DAY])¶ 获取指定时刻的资产市值详情
参数: - datetime (Datetime) – 指定时刻
- ktype (Query.KType) – K线类型
返回类型:
-
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线类型,必须与日期列表匹配
返回: 收益曲线
返回类型:
-
add_trade_record
(self, tr)¶ 直接加入交易记录,如果加入初始化账户记录,将清除全部已有交易及持仓记录。
参数: tr (TradeRecord) – 交易记录 返回: True(成功) | False(失败) 返回类型: bool
-
tocsv
(self, path)¶ 以csv格式输出交易记录、未平仓记录、已平仓记录、资产净值曲线
参数: path (str) – 输出文件所在目录
-
reg_broker
(self, broker)¶ 注册订单代理。可执行多次该命令注册多个订单代理。
参数: broker (OrderBrokerBase) – 订单代理实例
-
clear_broker
(self)¶ 清空所有已注册订单代理
-