8.【PTrade使用指南】- 期货专用函数

期货专用函数
期货交易类函数
buy_open - 多开
buy_open(contract, amount, limit_price=None)
使用场景
该函数仅在回测、交易模块可用
接口说明
买入开仓
注意:
不同期货品种每一跳的价格变动都不一样,limit_price入参的时候要参考对应品种的价格变动规则,如limit_price不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单;
根据交易所规则,每天结束时会取消所有未完成交易;
参数
contract:期货合约代码;
amount:交易数量,正数;
limit_price:买卖限价;
返回
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id,失败则返回None。
示例
def initialize(context):g.security = ['IF1712.CCFX', 'CU1806.XSGE']set_universe(g.security)def handle_data(context, data):#买入开仓buy_open('IF1712.CCFX', 1)#买入开仓(限定点数为52220)buy_open('CU1806.XSGE', 1, limit_price=52220)
sell_close - 多平
sell_close(contract, amount, limit_price=None, close_today=False)
使用场景
该函数仅在回测、交易模块可用
接口说明
卖出平仓
注意:
不同期货品种每一跳的价格变动都不一样,limit_price入参的时候要参考对应品种的价格变动规则,如limit_price不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单;
根据交易所规则,每天结束时会取消所有未完成交易;
参数
contract:期货合约代码;
amount:交易数量,正数;
limit_price:买卖限价;
close_today:平仓方式。close_today=False为优先平昨仓,不足部分再平今仓;close_today=True为仅平今仓,委托数量若大于今仓系统会调整为今仓数量。close_today=True仅对上海期货交易所生效,其他交易所无需入参close_today字段,若设置为True系统会警告,并强行转换为close_today=False。
返回
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id,失败则返回None。
示例
def initialize(context):g.security = ['IF1712.CCFX', 'CU1806.XSGE']set_universe(g.security)def handle_data(context, data):#卖出平仓sell_close('IF1712.CCFX', 1)#卖出平今仓(限定点数为52220)sell_close ('CU1806.XSGE', 1, limit_price=52220, close_today=True)#卖出平仓(限定点数为52220)sell_close ('CU1806.XSGE', 1, limit_price=52220)
sell_open - 空开
sell_open(contract, amount, limit_price=None)
使用场景
该函数仅在回测、交易模块可用
接口说明
卖出开仓
注意:
不同期货品种每一跳的价格变动都不一样,limit_price入参的时候要参考对应品种的价格变动规则,如limit_price不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单;
根据交易所规则,每天结束时会取消所有未完成交易;
参数
contract:期货合约代码;
amount:交易数量,正数;
limit_price:买卖限价;
返回
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id,失败则返回None。
示例
def initialize(context):g.security = ['IF1712.CCFX', 'CU1806.XSGE']set_universe(g.security)def handle_data(context, data):#卖出开仓sell_open('IF1712.CCFX', 1)#卖出开仓(限定点数为52220)sell_open ('CU1806.XSGE', 1, limit_price=52220)
buy_close - 空平
buy_close(contract, amount, limit_price=None, close_today=False)
使用场景
该函数仅在回测、交易模块可用
接口说明
买入平仓
注意:
不同期货品种每一跳的价格变动都不一样,limit_price入参的时候要参考对应品种的价格变动规则,如limit_price不做入参则会以交易的行情快照最新价或者回测的分钟最新价进行报单;
根据交易所规则,每天结束时会取消所有未完成交易;
参数
contract:期货合约代码;
amount:交易数量,正数;
limit_price:买卖限价;
close_today:平仓方式。close_today=False为优先平昨仓,不足部分再平今仓;close_today=True为仅平今仓,委托数量若大于今仓系统会调整为今仓数量。close_today=True仅对上海期货交易所生效,其他交易所无需入参close_today字段,若设置为True系统会警告,并强行转换为close_today=False。
返回
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id,失败则返回None。
示例
def initialize(context):g.security = ['IF1712.CCFX', 'CU1806.XSGE']set_universe(g.security)def handle_data(context, data):#买入平仓buy_close('IF1712.CCFX', 1)#买入平今仓(限定点数为52220)buy_close ('CU1806.XSGE', 1, limit_price=52220, close_today=False)#买入平仓(限定点数为52220)buy_close ('CU1806.XSGE', 1, limit_price=52220)
期货查询类函数
get_margin_rate- 获取用户设置的保证金比例
get_margin_rate(transaction_code)
使用场景
该函数仅在回测模块可用
接口说明
获取用户设置的保证金比例
参数
transaction_code:期货合约的交易代码,str类型,如沪铜2112("CU2112")的交易代码为"CU";
返回
用户设置的保证金比例,float浮点型数据,默认返回交易所设定的保证金比例;
示例
def initialize(context):g.security = "CU2112.XSGE"set_universe(g.security)# 设置沪铜品种的保证金比例为8%set_margin_rate("CU", 0.08)def before_trading_start(context, data):# 获取沪铜品种的保证金比例margin_rate = get_margin_rate("CU")log.info(margin_rate)# 获取苹果品种的保证金比例margin_rate = get_margin_rate("AP")log.info(margin_rate)def handle_data(context, data):pass
get_instruments- 获取合约信息
get_instruments(contract)
使用场景
该函数仅在回测、交易模块可用
接口说明
获取合约的上市的具体信息
参数
contract:字符串,期货的合约代码,str类型;
返回
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类型;
注意:
期货实盘模块中,由于行情源的限制,涨跌幅目前暂无法提供
示例
def initialize(context):g.security = ["CU2112.XSGE", "IF2112.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
期货设置类函数
set_future_commission - 设置期货手续费
set_future_commission(transaction_code, commission)
使用场景
该函数仅在回测模块可用
接口说明
设置期货手续费,手续费是按照交易代码进行设置的
参数
transaction_code:期货合约的交易代码,str类型,如沪铜2112("CU2112")的交易代码为"CU";
commission:手续费,浮点型,设置说明:
-
当交易时的手续费是按手数收取时,则这里应当设置为每手收取的金额,例如:将期货的手续费设置为2元/手,此处应填写2;
-
当交易时的手续费是按总成交额收取时,则这里应当设置为总成交额的比例,例如:将期货的手续费费率设置为0.4/万,此处应填写0.00004;
返回
None
示例
def initialize(context):g.security = "CU2112.XSGE"set_universe(g.security)# 设置沪铜的手续费,0.4/万set_future_commission("CU", 0.00004)# 设置沪金的手续费,2元/手set_future_commission("AU", 2)def handle_data(context, data):# 买入沪铜2112buy_open(g.security, 2)# 买入沪金2112buy_open("AU2112.XSGE", 20)
set_margin_rate - 设置期货保证金比例
set_margin_rate(transaction_code, margin_rate)
使用场景
该函数仅在回测、交易模块可用
接口说明
设置期货收取的保证金比例,保证金比例是按照交易代码进行设置的
参数
transaction_code:期货合约的交易代码,str类型,如沪铜2112("CU2112")的交易代码为"CU";
margin_rate:保证金比例,浮点型,将对应期货的保证金比例设置为5%则输入0.05;
返回
None
示例
def initialize(context):g.security = "CU2112.XSGE"set_universe(g.security)# 设置沪铜品种收取的保证金比例设置为5%set_margin_rate("CU", 0.05)def handle_data(context, data):# 买入沪铜2112buy_open(g.security, 10)
