主题
期货专用接口
期货交易类接口
buy_open
中文名
多开
接口说明
买入开仓
接口定义
python
buy_open(contract, amount, limit_price=None)注意事项
不同期货品种每一跳的价格变动都不一样,limit_price 入参的时候要参考对应品种的价格变动规则,如 limit_price 不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单
根据交易所规则,每天结束时会取消所有未完成交易
实盘交易中不支持主连合约(88)和指数合约(99)
使用场景
❌研究 ✅回测 ✅交易
参数
contract
- 类型:
str
期货合约代码
amount
- 类型:
int
交易数量,正数
limit_price
- 类型:
float|None - 默认值:
None
买卖限价
市价委托
交易场景下,limit_price字段为None时,系统会获取行情快照最新价报单
返回值
str|None:
- 创建订单成功,则返回订单编号。对应
Order对象中的id - 创建订单失败,返回
None
异常
IQInvalidArgument: 当合约代码包含"88"或"99"时,实盘交易会抛出异常
示例
python
def initialize(context):
g.security = ['IF2312.CCFX']
set_universe(g.security)
def handle_data(context, data):
# 买入开仓
buy_open('IF2312.CCFX', 1)buy_close
中文名
期货买入平仓
接口说明
期货合约买入平仓操作,用于平掉空头持仓。
接口定义
python
buy_close(contract, amount, limit_price=None, close_today=False)注意事项
不同期货品种每一跳的价格变动都不一样,limit_price 入参的时候要参考对应品种的价格变动规则,如 limit_price 不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单
根据交易所规则,每天结束时会取消所有未完成交易
实盘交易中不支持主连合约(88)和指数合约(99)
系统会自动检查持仓数量,如果持仓不足会自动调整平仓数量
使用场景
❌研究 ✅回测 ✅交易
参数
contract
- 类型:
str
期货合约代码
amount
- 类型:
int
交易数量,正数
limit_price
- 类型:
float|None - 默认值:
None
买卖限价
close_today
- 类型:
bool - 默认值:
False
平仓方式。close_today=False 为优先平昨仓,不足部分再平今仓;close_today=True 为仅平今仓,委托数量若大于今仓系统会调整为今仓数量。close_today=True 仅对上海期货交易所生效,其他交易所无需入参 close_today 字段,若设置为 True 系统会警告,并强行转换为 close_today=False
市价委托
交易场景下,limit_price字段为None时,系统会获取行情快照最新价报单
返回值
str|None:
- 创建订单成功,则返回订单编号。对应
Order对象中的id - 创建订单失败,返回
None
异常
IQInvalidArgument: 当合约代码包含"88"或"99"时,实盘交易会抛出异常
示例
python
def initialize(context):
g.security = ['IF2312.CCFX']
set_universe(g.security)
def handle_data(context, data):
# 买入平仓
buy_close('IF2312.CCFX', 1)sell_open
中文名
空开
接口说明
卖出开仓
接口定义
python
sell_open(contract, amount, limit_price=None)注意事项
不同期货品种每一跳的价格变动都不一样,limit_price 入参的时候要参考对应品种的价格变动规则,如 limit_price 不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单
根据交易所规则,每天结束时会取消所有未完成交易
实盘交易中不支持主连合约(88)和指数合约(99)
使用场景
❌研究 ✅回测 ✅交易
参数
contract
- 类型:
str
期货合约代码
amount
- 类型:
int
交易数量,正数
limit_price
- 类型:
float|None - 默认值:
None
买卖限价
市价委托
交易场景下,limit_price字段为None时,系统会获取行情快照最新价报单
返回值
str|None:
- 创建订单成功,则返回订单编号。对应
Order对象中的id - 创建订单失败,返回
None
异常
IQInvalidArgument: 当合约代码包含"88"或"99"时,实盘交易会抛出异常
示例
python
def initialize(context):
g.security = ['IF2312.CCFX']
set_universe(g.security)
def handle_data(context, data):
# 卖出开仓
sell_open('IF2312.CCFX', 1)sell_close
中文名
多平
接口说明
卖出平仓
接口定义
python
sell_close(contract, amount, limit_price=None, close_today=False)注意事项
不同期货品种每一跳的价格变动都不一样,limit_price 入参的时候要参考对应品种的价格变动规则,如 limit_price 不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单
根据交易所规则,每天结束时会取消所有未完成交易
实盘交易中不支持主连合约(88)和指数合约(99)
系统会自动检查持仓数量,如果持仓不足会自动调整平仓数量
使用场景
❌研究 ✅回测 ✅交易
参数
contract
- 类型:
str
期货合约代码
amount
- 类型:
int
交易数量,正数
limit_price
- 类型:
float|None - 默认值:
None
买卖限价
close_today
- 类型:
bool - 默认值:
False
平仓方式。close_today=False 为优先平昨仓,不足部分再平今仓;close_today=True 为仅平今仓,委托数量若大于今仓系统会调整为今仓数量。close_today=True 仅对上海期货交易所生效,其他交易所无需入参 close_today 字段,若设置为 True 系统会警告,并强行转换为 close_today=False
市价委托
交易场景下,limit_price字段为None时,系统会获取行情快照最新价报单
返回值
str|None:
- 创建订单成功,则返回订单编号。对应
Order对象中的id - 创建订单失败,返回
None
异常
IQInvalidArgument: 当合约代码包含"88"或"99"时,实盘交易会抛出异常
示例
python
def initialize(context):
g.security = ['IF2312.CCFX']
set_universe(g.security)
def handle_data(context, data):
# 卖出平仓
sell_close('IF2312.CCFX', 1)期货查询类接口
get_instruments
中文名
获取合约信息
接口说明
获取合约的上市的具体信息
接口定义
python
get_instruments(contract)注意事项
期货实盘模块中,由于行情源的限制,涨跌幅目前暂无法提供
此 API 依靠期货资料详情数据权限,使用前请与券商确认是否有此权限,无权限时调用返回空 dict
使用场景
✅研究 ✅回测 ✅交易
参数
contract
- 类型:
str
期货的合约代码
返回值
FutureParams:
FutureParams 对象,主要返回的字段为:
contract_code-- 合约代码,str 类型contract_name-- 合约名称,str 类型exchange-- 交易所:大商所、郑商所、上期所、中金所,str 类型trade_unit-- 交易单位,int 类型contract_multiplier-- 合约乘数,float 类型delivery_date-- 交割日期,str 类型listing_date-- 上市日期,str 类型trade_code-- 交易代码,str 类型margin_rate-- 保证金比例,float 类型
示例
python
def initialize(context):
g.security = ["IF2312.CCFX"]
set_universe(g.security)
def before_trading_start(context, data):
# 获取股票池代码合约信息
for security in g.security:
info = get_instruments(security)
log.info(info)
def handle_data(context, data):
passget_margin_rate
中文名
获取用户设置的保证金比例
接口说明
获取用户设置的保证金比例
接口定义
python
get_margin_rate(transaction_code)使用场景
✅研究 ✅回测 ❌交易
参数
transaction_code
- 类型:
str
期货合约的交易代码,如沪铜 2112("CU2112")的交易代码为"CU"
返回值
float:
用户设置的保证金比例,默认返回交易所设定的保证金比例
示例
python
def initialize(context):
g.security = "IF2312.CCFX"
set_universe(g.security)
# 设置沪深300指数的保证金比例为8%
set_margin_rate("IF", 0.08)
def before_trading_start(context, data):
# 获取沪深300指数的保证金比例
margin_rate = get_margin_rate("IF")
log.info(margin_rate)
# 获取5年期国债的保证金比例
margin_rate = get_margin_rate("TF")
log.info(margin_rate)
def handle_data(context, data):
pass期货设置类接口
set_future_commission
中文名
设置期货手续费
接口说明
设置期货手续费,手续费是按照交易代码进行设置的
接口定义
python
set_future_commission(transaction_code, commission)注意事项
手续费不能够小于或者等于0,请核对后重新输入
交易场景不支持此函数
使用场景
✅研究 ✅回测 ❌交易
参数
transaction_code
- 类型:
str
期货合约的交易代码,如沪铜 2112("CU2112")的交易代码为"CU"
commission
- 类型:
float
手续费,设置说明:
- 当交易时的手续费是按手数收取时,则这里应当设置为每手收取的金额,例如:将期货的手续费设置为 2 元/手,此处应填写 2
- 当交易时的手续费是按总成交额收取时,则这里应当设置为总成交额的比例,例如:将期货的手续费费率设置为 0.4/万,此处应填写 0.00004
返回值
None
异常
IQInvalidArgument: 当手续费小于或等于0时抛出异常
示例
python
def initialize(context):
g.security = "IF2312.CCFX"
set_universe(g.security)
# 设置沪深300指数的手续费,0.4/万
set_future_commission("IF", 0.00004)
# 设置沪深300指数的手续费,2元/手
set_future_commission("IF", 2)
def handle_data(context, data):
# 买入指数2312
buy_open(g.security, 2)set_margin_rate
中文名
设置期货保证金比例
接口说明
设置期货收取的保证金比例,保证金比例是按照交易代码进行设置的
接口定义
python
set_margin_rate(transaction_code, margin_rate)注意事项
保证金比例必须大于0,请仔细核对;
使用场景
✅研究 ✅回测 ❌交易
参数
transaction_code
- 类型:
str
期货合约的交易代码,如沪铜 2112("CU2112")的交易代码为"CU"
margin_rate
- 类型:
float
保证金比例,将对应期货的保证金比例设置为 5%则输入 0.05
返回值
None
异常
IQInvalidArgument: 当保证金比例小于或等于0时抛出异常
示例
python
def initialize(context):
g.security = "IF2312.CCFX"
set_universe(g.security)
# 设置沪深300指数收取的保证金比例设置为5%
set_margin_rate("IF", 0.05)
def handle_data(context, data):
# 买入指数2312
buy_open(g.security, 10)说明
接口支持的业务范围以及支持在引擎的哪些流程函数中调用,详见 接口列表