# 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[str],如 ["12345", "67890"] list[str] 返回资金账户ID列表
失败 [] list 未登录账户时返回空列表
范例
1. 获取当前所有登录的资金账户列表
2. 统计当前登录的有效和无效账户

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

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

函数原型

isaccount(    account: str = '' # 交易帐号(可选) ) -> ​​bool # 返回:True或False
参数
参数 类型 缺省 必填 说明
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号
返回值

状态 返回值 返回类型 说明
有效 True ​bool 账户已登录
无效 False ​bool 账户未登录
范例
#如果该账户已登录则返回True,否则返回False
account=isaccount("351579")
1
2

# get_portfolio 投资组合信息

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

函数原型

get_portfolio(    order_book_id: str, # 合约代码    type: int , # 持仓类型    account: str = '', # 交易帐号(可选)    calc: bool = True # 是否扣减平仓未成交(可选) ) -> portfolio # 返回:portfolio对象
参数
参数 类型 缺省 必填 说明
order_book_id str - Y 合约代码
type int - Y 指定查询类型,
     - 期货: 0 = 投机, 1 = 保值 ;
     - 股票: 0 = 普通, 1 = 融资 ;
     - 期权: 0 = 非备兑 1 = 备兑;
  2表示全部类型,
该参数对回测无效
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号, 该参数对回测无效
calc bool True N 是否自动减扣未成交平仓单,
    True:自动扣除未成交的平仓委托单,返回实际可用持仓
    False:返回当前总持,含有未成交平仓单
返回值

范例
    # 不扣减未成交平仓单,返回总持仓
    portfolio_all = get_portfolio("AG00", type=0, calc=False)
    
    # 默认 True,会扣减未成交平仓单,返回实际可用持仓
    portfolio_available = get_portfolio("AG00", type=0, calc=True)
    

    print(f"持仓数量: {portfolio_all.buy_quantity}, 可用持: {portfolio_available.buy_quantity}")
1
2
3
4
5
6
7
8

# get_portfolio_book 获取持仓品种列表

获取指定账户下的持仓品种列表

函数原型

get_portfolio_book(    type: int , # 持仓类型    account: str = '', # 交易帐号(可选) ) -> list # 返回列表
参数
参数 类型 缺省 必填 说明
type int - Y 指定查询类型, 必填项,
  期货: 0表示投机, 1表示保值 ;
  股票: 0表示普通, 1表示融资 ;
  期权: 0表示非备兑 1表示备兑;
  2表示全部类型,
该参数对回测无效
account str '' N 指定具体的交易帐号,若不指定帐号,则取默认登录帐号, 该参数对回测无效
返回值
状态 返回值 返回类型 说明
有持仓 ['code1', 'code2', ...] list 返回指定类型的持仓品种代码组成的字符串列表
无持仓 [] list 空列表
范例
#得到账户'5'当前的持仓品种列表。
portfolio=get_portfolio_book (2, "5")
#判断该账户中是否已经持有指定的品种。如果有则输出'已经持仓',否者输出'未持仓'或者进行其他相应的操作处理。
if 'SQRB00' in portfolio:
    write_logging('已持仓')
else:
    write_logging('未持仓')
1
2
3
4
5
6
7