跳转到内容

期货专用接口

期货交易类接口

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):
    pass

get_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)

说明

接口支持的业务范围以及支持在引擎的哪些流程函数中调用,详见 接口列表