3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化交易平台中,进行期货交易平仓时,close_today 参数用于控制是否专门平掉当天新建的仓位(即平今仓)。由于不同期货交易所对平今仓和平昨仓的规则与手续费差异较大,正确设置该参数对于控制交易成本和避免委托废单至关重要。
close_today 参数的基本含义在聚宽平台中,order、order_target、order_value 以及 order_target_value 等下单函数均支持 close_today 参数:
bool(布尔值)Falseclose_today 处理规则这三个交易所严格区分平今仓与平昨仓,close_today 参数的生效逻辑如下:
close_today = True(只平今仓):
close_today = False(优先平昨仓):
close_today 设置为 True,系统会直接报错。无论 close_today 设置为 True 还是 False,平仓时手续费均按实际平掉的仓位类型分别计算:
set_order_cost 设置的 close_commission(平仓佣金费率)扣除。set_order_cost 设置的 close_today_commission(平今仓佣金费率)扣除。注:中金所股指期货等品种的平今仓手续费通常远高于平昨仓手续费,因此在编写策略时需格外注意平仓时机与策略逻辑。
import jqdata
def initialize(context):
# 设置期货子账户
set_subportfolios([SubPortfolioConfig(cash=1000000, type='futures')])
# 设置中金所 IF 合约手续费
set_order_cost(OrderCost(open_commission=0.000023,
close_commission=0.000023,
close_today_commission=0.00023), type='index_futures')
def handle_data(context, data):
symbol = 'IF2309.CCFX'
# 示例1:只平今仓(若今仓不足会废单)
order(symbol, -1, side='long', close_today=True)
# 示例2:优先平昨仓,昨仓不足再平今仓(推荐常规平仓使用)
order(symbol, -1, side='long', close_today=False)
close_today=False,由系统优先平昨仓,避免因今仓不足导致废单。close_today=True,但需配合持仓查询函数检查 today_amount(今开仓量)。close_today=True 的报错。