# buy_open 开多(买开)

函数原型

buy_open(    order_book_id: str, # 合约代码    style: str, # 交易类型    price: float, # 交易价格    volume: int = 1, # 交易数量    amount: float, # 交易金额    hedge_flag: bool = False, # 交易标志    order_queue: bool = False, # 队列单标志    slithermethod: bool = False, # 大单处理标志    account: str = '', # 交易账户    repeat: int = 0, # 重复下单标志    min_volume: int = 1, # 最小成交量(FAK指令)    serial_id: int # 系统下单序列(无需设置) ) -> int # 返回:订单号或状态码
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码
style str - Y 交易类型
  - "Market"  市价
  - "Limit" 限价
  - "fak" 立即成交剩余自动撤销指令
  - "fok" 立即全部成交否则自动撤销指令
  - "Stop" 停损
  - "ThisClose" 对手价
  - "DBEST" 对方最优价优先
  - "WBEST" 本方最优价优先
price float 0 Y 交易价格,取决于 style 类型
  - "Limit": 买入价格
  - "fak"/"fok"/"DBEST"/"WBEST":保护价
  - "Stop"作为 止损价格,
  - "Market"/"ThisClose": 填 0
volume int 1 N 交易数量,与amount互斥,仅可指定其一
  - 单位:期货为手,股票为股,即100的整数倍。
  - 参数范围【>=1】
amount float - N 交易金额,指定后自动换算为交易数量。与volume互斥,仅可指定其一; 使用时,以关键字形式传递
hedge_flag bool False N 交易标志,
  - 期货:True(保值),False(投机)
  - 股票:True(融资),False(普通)
  - 期权:True(备兑),False(非备兑)
  注:该标志对于回测无效
order_queue bool False N 是否为队列单,该标志对于回测无效
slithermethod bool False N 是否使用大单处理下单模式, 该标志对于回测无效
account str ""'' N 指定交易账户,(如 "user123")。(即空字符串""或者'')未指定或者省略此字段时,代表使用默认登录账户,该标志对于回测无效
repeat int 0 N 是否允许重复下单。
  repeat=0:在同一K线上,同一行代码的相同下单语句仅允许下单一次,后续重复下单将被过滤,返回
  repeat=1:允许重复下单,系统不限制同一K线周期内的重复下单行为。
min_volume int 1 N 可选参数,使用fak指令时,用于指定的最小成交数量,省略时默认为1
serial_id int - N 下单序列号,由系统自动生成,无需用户操作
返回值
状态 返回值 返回类型 说明
成功 order_id int 订单ID,时交易订单的唯一标识,可用于交易过程追踪、仓位风险管理等
0 int 当order_queue或slithermethod参数为True时,其返回值恒为0
失败 None NoneType 当order_queue或slithermethod参数为True时,下单失败返回空值
-1 int 下单委托失败,具体失败原因可以根据交易日志判定
-2 int 因 repeat=0 且在同一K线周期内触发禁止重复下单限制,订单被过滤。属正常逻辑,无需作为错误处理。
例如,1分钟K线周期内,策略每5秒执行,若某行下单条件反复满足,首次下单后,后续再尝试下单时返回 -2。
范例

示例1:限价买入开仓
示例2:市价买入开仓
示例3:按金额买入开仓
示例4:FAK指令买入开仓
示例5:允许重复下单
示例6:订单返回值信息
示例7:多品种下单

# sell_close 平多(卖平)

函数原型

sell_close(    order_book_id: str, # 合约代码    style: str, # 交易类型    price: float, # 交易价格    volume: int = 1, # 交易数量    amount: float, # 交易金额    hedge_flag: bool = False, # 交易标志    order_queue: bool = False, # 队列单标志    slithermethod: bool = False, # 大单处理标志    account: str = '', # 交易账户    repeat: int = 0, # 重复下单标志    min_volume: int = 1, # 最小成交量(FAK指令)    serial_id: int # 系统下单序列(无需设置) ) -> int # 返回:订单号或状态码
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码
style str - Y 交易类型
  - "Market"  市价
  - "Limit" 限价
  - "fak" 立即成交剩余自动撤销指令
  - "fok" 立即全部成交否则自动撤销指令
  - "Stop" 停损
  - "ThisClose" 对手价
  - "DBEST" 对方最优价优先
  - "WBEST" 本方最优价优先
price float 0 Y 交易价格,取决于 style 类型
  - "Limit": 卖出价格
  - "fak"/"fok"/"DBEST"/"WBEST":保护价
  - "Stop"作为 止损价格,
  - "Market"/"ThisClose": 填 0
volume int 1 N 交易数量,与amount互斥,仅可指定其一
  - 单位:期货为手,股票为股,即100的整数倍。
  - 参数范围【>=1】
amount float - N 交易金额,指定后自动换算为交易数量。与volume互斥,仅可指定其一; 使用时,以关键字形式传递
hedge_flag bool False N 交易标志,
  - 期货:True(保值),False(投机)
  - 股票:True(融资),False(普通)
  - 期权:True(备兑),False(非备兑)
  注:该标志对于回测无效
order_queue bool False N 是否为队列单,该标志对于回测无效
slithermethod bool False N 是否使用大单处理下单模式, 该标志对于回测无效
account str ""'' N 指定交易账户,(如 "user123")。(即空字符串""或者'')未指定或者省略此字段时,代表使用默认登录账户,该标志对于回测无效
repeat int 0 N 是否允许重复下单。
  repeat=0:在同一K线上,同一行代码的相同下单语句仅允许下单一次,后续重复下单将被过滤,返回
  repeat=1:允许重复下单,系统不限制同一K线周期内的重复下单行为。
min_volume int 1 N 可选参数,使用fak指令时,用于指定的最小成交数量,省略时默认为1
serial_id int - N 下单序列号,由系统自动生成,无需用户操作
返回值
状态 返回值 返回类型 说明
成功 order_id int 订单ID,时交易订单的唯一标识,可用于交易过程追踪、仓位风险管理等
0 int 当order_queue或slithermethod参数为True时,其返回值恒为0
失败 None NoneType 当order_queue或slithermethod参数为True时,下单失败返回空值
-1 int 下单委托失败,具体失败原因可以根据交易日志判定
-2 int 因 repeat=0 且在同一K线周期内触发禁止重复下单限制,订单被过滤。属正常逻辑,无需作为错误处理。
例如,1分钟K线周期内,策略每5秒执行,若某行下单条件反复满足,首次下单后,后续再尝试下单时返回 -2。
范例

示例1:限价卖出平仓
示例2:指定账户限价卖出平仓
示例2:指定账户采用市价卖出平仓
示例3:按金额买入
示例4:FOK指令卖出平仓
示例5:使用队列单卖出平仓
示例6:多品种清空多头仓位

# sell_open 开空(卖开/融券开仓)

函数原型

sell_open(    order_book_id: str, # 合约代码    style: str, # 交易类型    price: float, # 交易价格    volume: int = 1, # 交易数量    amount: float, # 交易金额    hedge_flag: bool = False, # 交易标志    order_queue: bool = False, # 队列单标志    slithermethod: bool = False, # 大单处理标志    account: str = '', # 交易账户    repeat: int = 0, # 重复下单标志    min_volume: int = 1, # 最小成交量(FAK指令)    serial_id: int # 系统下单序列(无需设置) ) -> int # 返回:订单号或状态码
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码
style str - Y 交易类型
  - "Market"  市价
  - "Limit" 限价
  - "fak" 立即成交剩余自动撤销指令
  - "fok" 立即全部成交否则自动撤销指令
  - "Stop" 停损
  - "ThisClose" 对手价
  - "DBEST" 对方最优价优先
  - "WBEST" 本方最优价优先
price float 0 Y 交易价格,取决于 style 类型
  - "Limit": 买入价格
  - "fak"/"fok"/"DBEST"/"WBEST":保护价
  - "Stop"作为 止损价格,
  - "Market"/"ThisClose": 填 0
volume int 1 N 交易数量,与amount互斥,仅可指定其一
  - 单位:期货为手,股票为股,即100的整数倍。
  - 参数范围【>=1】
amount float - N 交易金额,指定后自动换算为交易数量。与volume互斥,仅可指定其一; 使用时,以关键字形式传递
hedge_flag bool False N 交易标志,
  - 期货:True(保值),False(投机)
  - 股票:True(融资),False(普通)
  - 期权:True(备兑),False(非备兑)
  注:该标志对于回测无效
order_queue bool False N 是否为队列单,该标志对于回测无效
slithermethod bool False N 是否使用大单处理下单模式, 该标志对于回测无效
account str ""'' N 指定交易账户,(如 "user123")。(即空字符串""或者'')未指定或者省略此字段时,代表使用默认登录账户,该标志对于回测无效
repeat int 0 N 是否允许重复下单。
  repeat=0:在同一K线上,同一行代码的相同下单语句仅允许下单一次,后续重复下单将被过滤,返回
  repeat=1:允许重复下单,系统不限制同一K线周期内的重复下单行为。
min_volume int 1 N 可选参数,使用fak指令时,用于指定的最小成交数量,省略时默认为1
serial_id int - N 下单序列号,由系统自动生成,无需用户操作
返回值
状态 返回值 返回类型 说明
成功 order_id int 订单ID,时交易订单的唯一标识,可用于交易过程追踪、仓位风险管理等
0 int 当order_queue或slithermethod参数为True时,其返回值恒为0
失败 None NoneType 当order_queue或slithermethod参数为True时,下单失败返回空值
-1 int 下单委托失败,具体失败原因可以根据交易日志判定
-2 int 因 repeat=0 且在同一K线周期内触发禁止重复下单限制,订单被过滤。属正常逻辑,无需作为错误处理。
例如,1分钟K线周期内,策略每5秒执行,若某行下单条件反复满足,首次下单后,后续再尝试下单时返回 -2。
范例

示例1:限价卖出开仓
示例2:市价卖出开仓
示例3:按金额卖出开仓
示例4:FAK指令卖出开仓
示例5:允许重复下单
示例6:订单返回值信息
示例7:多品种下单

# buy_close 平空(买平/买券还券)

函数原型

buy_close(    order_book_id: str, # 合约代码    style: str, # 交易类型    price: float, # 交易价格    volume: int = 1, # 交易数量    amount: float, # 交易金额    hedge_flag: bool = False, # 交易标志    order_queue: bool = False, # 队列单标志    slithermethod: bool = False, # 大单处理标志    account: str = '', # 交易账户    repeat: int = 0, # 重复下单标志    min_volume: int = 1, # 最小成交量(FAK指令)    serial_id: int # 系统下单序列(无需设置) ) -> int # 返回:订单号或状态码
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码
style str - Y 交易类型
  - "Market"  市价
  - "Limit" 限价
  - "fak" 立即成交剩余自动撤销指令
  - "fok" 立即全部成交否则自动撤销指令
  - "Stop" 停损
  - "ThisClose" 对手价
  - "DBEST" 对方最优价优先
  - "WBEST" 本方最优价优先
price float 0 Y 交易价格,取决于 style 类型
  - "Limit": 卖出价格
  - "fak"/"fok"/"DBEST"/"WBEST":保护价
  - "Stop"作为 止损价格,
  - "Market"/"ThisClose": 填 0
volume int 1 N 交易数量,与amount互斥,仅可指定其一
  - 单位:期货为手,股票为股,即100的整数倍。
  - 参数范围【>=1】
amount float - N 交易金额,指定后自动换算为交易数量。与volume互斥,仅可指定其一; 使用时,以关键字形式传递
hedge_flag bool False N 交易标志,
  - 期货:True(保值),False(投机)
  - 股票:True(融资),False(普通)
  - 期权:True(备兑),False(非备兑)
  注:该标志对于回测无效
order_queue bool False N 是否为队列单,该标志对于回测无效
slithermethod bool False N 是否使用大单处理下单模式, 该标志对于回测无效
account str ""'' N 指定交易账户,(如 "user123")。(即空字符串""或者'')未指定或者省略此字段时,代表使用默认登录账户,该标志对于回测无效
repeat int 0 N 是否允许重复下单。
  repeat=0:在同一K线上,同一行代码的相同下单语句仅允许下单一次,后续重复下单将被过滤,返回
  repeat=1:允许重复下单,系统不限制同一K线周期内的重复下单行为。
min_volume int 1 N 可选参数,使用fak指令时,用于指定的最小成交数量,省略时默认为1
serial_id int - N 下单序列号,由系统自动生成,无需用户操作
返回值
状态 返回值 返回类型 说明
成功 order_id int 订单ID,时交易订单的唯一标识,可用于交易过程追踪、仓位风险管理等
0 int 当order_queue或slithermethod参数为True时,其返回值恒为0
失败 None NoneType 当order_queue或slithermethod参数为True时,下单失败返回空值
-1 int 下单委托失败,具体失败原因可以根据交易日志判定
-2 int 因 repeat=0 且在同一K线周期内触发禁止重复下单限制,订单被过滤。属正常逻辑,无需作为错误处理。
例如,1分钟K线周期内,策略每5秒执行,若某行下单条件反复满足,首次下单后,后续再尝试下单时返回 -2。
范例

示例1:空头限价平仓
示例2:指定账户限价平空
示例2:指定账户采用市价平空
示例3:平指定金额的仓位
示例4:FOK指令平空
示例5:使用队列单平空
示例6:多品种空头平仓

# get_orders 获取当日委托订单

获取当日委托订单。其数据来自账户栏的委托记录中的记录。

函数原型

get_orders(    order_book_id: str, # 合约代码    type: int, # 订单类型    account: str = '', # 交易帐号(可选) ) -> List[Order] # 返回:Order对象组成的列表
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码,支持传入关键词"all",表示全部合约
type int - Y 0:只取未成交订单  1:取全部订单
account str "" N 指定交易帐号,如果不填,则使用默认登录账号
返回值

范例
1. 查看指定合约的全部订单信息
2. 汇总每日交易情况 - 统计所有合约的手数
3. 收盘后保存未成交订单到 CSV文件中

# get_orders_id 获取当日指定id的委托订单

获取当日指定id的委托订单 。

函数原型

get_orders_id(    order_id: int, # 订单ID    account: str = '', # 交易帐号(可选) ) -> Order # 返回:Order对象
参数
参数 类型 缺省 必填 说明
order_id int - Y 唯一标识订单的id
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号
返回值

范例
1. 当前策略单一品种的订单管理与查询
2. 当前策略基于合约池的多品种订单管理与查询

# cancel_order 撤销指定order_id订单

撤销指定order_id的订单 。(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)

函数原型

cancel_order(    order_id: int, # 订单ID    queue: bool = False, # 是否为队列单(可选)    account: str = '' # 交易帐号(可选) ) -> NoneType # 返回:None
参数
参数 类型 缺省 必填 说明
order_id int - Y 唯一标识订单的id, 必须填
queue bool False N 指示是否为队列单
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号
返回值
状态 返回值 返回类型 说明
任何状态 None NoneType 无论撤单成功还是失败,都返回None,可以结合get_orders_id方法确认订单状态
范例
1. 最近一笔未成交超时撤单
2. 全量未成交单超时撤单
3. 全量未成交单超时撤单及撤单状态跟踪
4. 全量未成交单超时撤单及撤单状态跟踪(含重试机制)

# get_traders 获取当日成交订单

获取当日成交订单对象

函数原型

get_traders(    order_book_id: int, # 合约代码    account: str = '' # 交易帐号(可选) ) -> ​list[trader] # 返回:trader对象
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码,或者为"all"全部合约
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号
返回值

范例

1. 获取当日所有成交订单
2. 统计指定合约的成交数据
3. 计算每笔委托订单的成交均价

# get_account 得到投资者账户信息

获取指定账户的资金、权益、保证金、状态等相关信息。

函数原型

get_account(    type: int, # 合约代码    account: str = '' # 交易帐号(可选) ) -> ​list[Trader] # 返回:trader对象
参数

返回值

状态 返回值 返回类型 说明
成功 具体数值,如 123451000.5"CTP" int / float / str 返回相应账户信息数值
失败 None NoneType 查询失败,返回None
范例
1. 获取账户相关信息和数据类型

# get_account_book 得到当前登录所有账户列表

获取当前已登录的资金账户列表,含登录失败的无效账号。

函数原型

get_account_book() # 返回:账户列表

​list of str 账户列表

返回值

状态 返回值 返回类型 说明
成功 list[str],如 "12345", "67890" list[str] 返回资金账户ID列表
失败 [] list 未登录账户时返回空列表
范例
1. 获取当前所有登录的资金账户列表
2. 统计当前登录的有效和无效账户

# isaccount 判断指定帐号是否是当前已登录有效帐号

isaccount(account)

判断指定帐号是否是当前已登录有效帐号

参数
参数 类型 说明
account str 指定具体的交易帐号,若不指定帐号,则取默认登录帐号
返回值

​bool 账户已登录则返回True,否则返回False

范例
#如果该账户已登录则返回True,否则返回False
account=isaccount("351579")
1
2

# get_portfolio 投资组合信息

get_portfolio (order_book_id, type, account, calc)

投资组合信息(股票+期货的混合)。

参数
参数 类型 说明
order_book_id str 合约代码,必填项
type int 指定查询类型, 必填项,
  期货: 0表示投机, 1表示保值 ;
  股票: 0表示普通, 1表示融资 ;
  期权: 0表示非备兑 1表示备兑;
  2表示全部类型,
该参数对回测无效
account str 指定具体的交易帐号,若不指定帐号,则取默认登录帐号, 该参数对回测无效
calc bool 指示是否自动减扣未成交平仓单,比如当有1手持仓,1手未成交平仓单,那么实际返回持仓数量为0。可不填,默认为True
返回值

portfolio对象,失败返回 None

范例
#获得"RB10"品种的浮动盈亏,(多空同时存在时,为多空浮动盈亏之和)
portfolio=get_portfolio ("SQRB10", 2)
write_logging(str(portfolio.pnl))
1
2
3

# get_portfolio_book 投资组合持仓品种

get_portfolio_book (type, account)

投资组合持仓品种

参数
参数 类型 说明
type int 指定查询类型, 必填项,
  期货: 0表示投机, 1表示保值 ;
  股票: 0表示普通, 1表示融资 ;
  期权: 0表示非备兑 1表示备兑;
  2表示全部类型,
该参数对回测无效
account str 指定具体的交易帐号,若不指定帐号,则取默认登录帐号, 该参数对回测无效
返回值

​返回 list of str,若没有任何持仓,则返回一个空的list

范例
#得到账户'5'当前的持仓品种列表。
portfolio=get_portfolio_book (2, "5")
#判断该账户中是否已经持有指定的品种。如果有则输出'已经持仓',否者输出'未持仓'或者进行其他相应的操作处理。
if 'SQRB00' in portfolio:
    write_logging('已持仓')
else:
    write_logging('未持仓')
1
2
3
4
5
6
7