交易管理

交易管理可理解为一个模拟账户进行模拟交易。一般使用 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) – 账户名称

返回类型:

TradeManager

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

checkin(self, datetime, cash)

向账户内存入现金

参数:
  • datetime (Datetime) – 交易时间

  • cash (float) – 存入的现金量

返回类型:

TradeRecord

checkout(self, datetime, cash)

从账户内取出现金

参数:
  • datetime (Datetime) – 交易时间

  • cash (float) – 取出的资金量

返回类型:

TradeRecord

buy(self, datetime, stock, real_price, number[, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID])

买入操作

参数:
  • datetime (Datetime) – 买入时间

  • stock (Stock) – 买入的证券

  • real_price (float) – 实际买入价格

  • num (float) – 买入数量

  • stoploss (float) – 止损价

  • goal_price (float) – 目标价格

  • plan_price (float) – 计划买入价格

  • part (SystemPart) – 交易指示来源

返回类型:

TradeRecord

sell(self, datetime, stock, real_price[, number=constant.max_double, stoploss=0.0, goal_price=0.0, plan_price=0.0, part=System.INVALID])

卖出操作

参数:
  • datetime (Datetime) – 卖出时间

  • stock (Stock) – 卖出的证券

  • real_price (float) – 实际卖出价格

  • num (float) – 卖出数量,如果等于constant.max_double, 表示全部卖出

  • stoploss (float) – 新的止损价

  • goal_price (float) – 新的目标价格

  • plan_price (float) – 原计划卖出价格

  • part (SystemPart) – 交易指示来源

返回类型:

TradeRecord

have(self, stock)

当前是否持有指定的证券

参数:

stock (Stock) – 指定证券

返回类型:

bool

cash(self, datetime[, ktype=Query.KType.DAY])

获取指定日期的现金。(注:如果不带日期参数,无法根据权息信息调整持仓。)

参数:
  • datetime (Datetime) – 指定时刻

  • ktype – K线类型

返回类型:

float

get_stock_num(self)

当前持有的证券种类数量,即当前持有几只股票(非各个股票的持仓数)

返回类型:

int

get_hold_num(self, datetime, stock)

获取指定时刻指定证券的持有数量

参数:
  • datetime (Datetime) – 指定时刻

  • stock (Stock) – 指定的证券

返回类型:

int

get_position(self, date, stock)

获取指定时间证券持仓记录,如当前未持有该票,返回PositionRecord()

参数:
  • date (Datetime) – 指定时间

  • stock (Stock) – 指定的证券

返回类型:

PositionRecord

get_trade_list(self[, start, end])

获取交易记录,未指定参数时,获取全部交易记录

参数:
返回类型:

TradeRecordList

get_position_list(self)

获取当前全部持仓记录

返回类型:

PositionRecordList

get_history_position_list(self)

获取全部历史持仓记录,即已平仓记录

返回类型:

PositionRecordList

get_buy_cost(self, datetime, stock, price, num)

计算买入成本

参数:
  • datetime (Datetime) – 交易时间

  • stock (Stock) – 交易的证券

  • price (float) – 买入价格

  • num (float) – 买入数量

返回类型:

CostRecord

get_sell_cost(self, datetime, stock, price, num)

计算卖出成本

参数:
  • datetime (Datetime) – 交易时间

  • stock (Stock) – 交易的证券

  • price (float) – 卖出价格

  • num (float) – 卖出数量

返回类型:

CostRecord

get_funds(self, datetime[, ktype = Query.DAY])

获取指定时刻的资产市值详情

参数:
  • datetime (Datetime) – 指定时刻

  • ktype (Query.KType) – K线类型

返回类型:

FundsRecord

get_funds_list(self, datetime[, ktype = Query.DAY])

获取指定日期列表每日资产记录

参数:
  • datetime (Datetime) – 指定时刻

  • ktype (Query.KType) – K线类型

返回类型:

FundsList

get_funds_curve(self, dates[, ktype = Query.DAY])

获取资产净值曲线

参数:
  • dates (DatetimeList) – 日期列表,根据该日期列表获取其对应的资产净值曲线

  • ktype (Query.KType) – K线类型,必须与日期列表匹配

返回:

资产净值列表

返回类型:

PriceList

get_profit_curve(self, dates[, ktype = Query.DAY])

获取收益曲线,即扣除历次存入资金后的资产净值曲线

参数:
  • dates (DatetimeList) – 日期列表,根据该日期列表获取其对应的收益曲线,应为递增顺序

  • ktype (Query.KType) – K线类型,必须与日期列表匹配

返回:

收益曲线

返回类型:

PriceList

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)

清空所有已注册订单代理