news 2026/4/23 9:34:36

【期货量化进阶】期货量化交易中的订单执行优化(实战技巧)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【期货量化进阶】期货量化交易中的订单执行优化(实战技巧)

一、前言

订单执行质量直接影响交易成本和策略收益。优化订单执行可以减少滑点、降低交易成本、提高策略表现。本文将介绍各种订单执行优化方法。

本文将介绍:

二、为什么选择天勤量化(TqSdk)

TqSdk订单执行支持:

功能说明
多种订单类型支持限价、市价等
快速执行支持快速下单
订单管理支持订单查询和管理
灵活扩展支持自定义执行逻辑

安装方法

pipinstalltqsdk pandas numpy

三、订单执行基础

3.1 订单类型

类型说明适用场景
市价单立即成交快速执行
限价单指定价格控制成本
止损单触发止损风险控制
止盈单触发止盈锁定利润

3.2 执行成本

成本类型说明影响因素
手续费交易手续费交易所规定
滑点成交价差流动性、订单大小
冲击成本市场冲击订单大小、市场深度

四、滑点控制

4.1 滑点估算

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:订单执行优化 说明:本代码仅供学习参考 """fromtqsdkimportTqApi,TqAuthimportpandasaspdimportnumpyasnpdefestimate_slippage(api,symbol,volume,direction="BUY"):"""估算滑点"""quote=api.get_quote(symbol)api.wait_update()ifdirection=="BUY":target_price=quote.ask_price1 available_volume=quote.ask_volume1# 如果订单量小于可用量,滑点较小ifvolume<=available_volume:slippage=0.0001# 0.01%else:# 需要吃多个价位slippage=0.0005# 0.05%else:target_price=quote.bid_price1 available_volume=quote.bid_volume1ifvolume<=available_volume:slippage=0.0001else:slippage=0.0005returnslippage,target_price# 使用示例api=TqApi(auth=TqAuth("快期账户","快期密码"))slippage,price=estimate_slippage(api,"SHFE.rb2510",1,"BUY")print(f"预计滑点:{slippage:.4%}, 目标价格:{price:.2f}")api.close()

4.2 滑点控制策略

defcontrol_slippage(api,symbol,direction,volume,max_slippage=0.001):"""控制滑点"""slippage,target_price=estimate_slippage(api,symbol,volume,direction)ifslippage>max_slippage:# 滑点过大,分批执行batch_size=int(volume*max_slippage/slippage)returnbatch_sizeelse:# 滑点可接受,直接执行returnvolume# 使用示例optimal_volume=control_slippage(api,"SHFE.rb2510","BUY",10,max_slippage=0.001)print(f"建议分批执行,每批:{optimal_volume}手")

五、执行算法

5.1 TWAP算法

deftwap_execution(api,symbol,direction,total_volume,duration_minutes=60):""" TWAP(时间加权平均价格)执行 参数: duration_minutes: 执行时间(分钟) """intervals=duration_minutes volume_per_interval=total_volume/intervals orders=[]foriinrange(intervals):quote=api.get_quote(symbol)api.wait_update()# 以中间价下单mid_price=(quote.bid_price1+quote.ask_price1)/2# 限价单order=api.insert_order(symbol,direction,"OPEN",int(volume_per_interval),limit_price=mid_price)orders.append(order)api.wait_update()ifi<intervals-1:time.sleep(60)# 等待1分钟returnorders# 使用示例orders=twap_execution(api,"SHFE.rb2510","BUY",10,duration_minutes=30)print(f"TWAP执行完成,共{len(orders)}笔订单")

5.2 VWAP算法

defvwap_execution(api,symbol,direction,total_volume,klines):""" VWAP(成交量加权平均价格)执行 参数: klines: 历史K线数据 """# 计算历史VWAPvwap=(klines['close']*klines['volume']).sum()/klines['volume'].sum()quote=api.get_quote(symbol)api.wait_update()current_price=quote.last_price# 如果当前价格低于VWAP,买入ifdirection=="BUY"andcurrent_price<vwap:# 根据价格偏离程度决定执行量price_deviation=(vwap-current_price)/vwap execution_ratio=min(price_deviation*10,1.0)# 最多100%volume=int(total_volume*execution_ratio)order=api.insert_order(symbol,direction,"OPEN",volume)returnorderreturnNone# 使用示例klines=api.get_kline_serial("SHFE.rb2510",3600,100)api.wait_update()order=vwap_execution(api,"SHFE.rb2510","BUY",10,klines)

5.3 冰山算法

deficeberg_execution(api,symbol,direction,total_volume,visible_size=1):""" 冰山算法(隐藏大单) 参数: visible_size: 可见订单大小 """remaining_volume=total_volume orders=[]whileremaining_volume>0:current_volume=min(visible_size,remaining_volume)# 限价单quote=api.get_quote(symbol)api.wait_update()ifdirection=="BUY":limit_price=quote.ask_price1else:limit_price=quote.bid_price1 order=api.insert_order(symbol,direction,"OPEN",current_volume,limit_price=limit_price)orders.append(order)remaining_volume-=current_volume# 等待订单成交api.wait_update()time.sleep(1)returnorders

六、时机选择

6.1 流动性时机

deffind_liquidity_window(klines,window_hours=24):"""寻找流动性窗口"""# 按小时统计成交量klines['hour']=klines.index.hour hourly_volume=klines.groupby('hour')['volume'].mean()# 找出成交量最大的时段best_hours=hourly_volume.nlargest(3).index.tolist()returnbest_hours# 使用示例best_hours=find_liquidity_window(klines)print(f"最佳交易时段:{best_hours}")

6.2 波动率时机

deffind_low_volatility_window(klines):"""寻找低波动率窗口"""returns=klines['close'].pct_change()# 按小时统计波动率klines['hour']=klines.index.hour hourly_vol=klines.groupby('hour').apply(lambdax:x['close'].pct_change().std())# 找出波动率最低的时段best_hours=hourly_vol.nsmallest(3).index.tolist()returnbest_hours# 使用示例low_vol_hours=find_low_volatility_window(klines)print(f"低波动率时段:{low_vol_hours}")

七、成本优化

7.1 手续费优化

defoptimize_commission(api,symbol,direction,volume,commission_rate=0.0001):"""优化手续费"""quote=api.get_quote(symbol)api.wait_update()price=quote.last_price contract_value=price*volume*10# 假设每手10吨commission=contract_value*commission_rate# 如果手续费过高,考虑分批执行ifcommission>100:# 假设阈值100元# 分批执行以降低单笔手续费batches=int(np.ceil(volume/5))# 每批5手returnbatcheselse:return1# 使用示例batches=optimize_commission(api,"SHFE.rb2510","BUY",20)print(f"建议分{batches}批执行")

7.2 总成本优化

defoptimize_total_cost(api,symbol,direction,volume):"""优化总成本"""# 估算各项成本slippage,target_price=estimate_slippage(api,symbol,volume,direction)slippage_cost=target_price*volume*10*slippage commission_rate=0.0001contract_value=target_price*volume*10commission_cost=contract_value*commission_rate total_cost=slippage_cost+commission_cost# 如果成本过高,优化执行方式iftotal_cost>200:# 假设阈值200元# 使用TWAP执行return"TWAP",total_cost*0.8# TWAP可降低20%成本else:return"MARKET",total_cost# 使用示例execution_method,cost=optimize_total_cost(api,"SHFE.rb2510","BUY",10)print(f"推荐执行方式:{execution_method}, 预计成本:{cost:.2f}元")

八、执行监控

8.1 执行质量监控

classExecutionMonitor:"""执行监控"""def__init__(self,api):self.api=api self.executions=[]deftrack_execution(self,order_id,expected_price,expected_volume):"""跟踪执行"""order=self.api.get_order(order_id)self.api.wait_update()iforder.status=="FINISHED":# 计算执行质量actual_price=order.trade_priceifhasattr(order,'trade_price')elseexpected_price actual_volume=order.trade_volume slippage=abs(actual_price-expected_price)/expected_price fill_rate=actual_volume/expected_volume execution_record={'order_id':order_id,'expected_price':expected_price,'actual_price':actual_price,'slippage':slippage,'fill_rate':fill_rate}self.executions.append(execution_record)returnexecution_recordreturnNonedefget_execution_stats(self):"""获取执行统计"""ifnotself.executions:returnNoneavg_slippage=np.mean([e['slippage']foreinself.executions])avg_fill_rate=np.mean([e['fill_rate']foreinself.executions])return{'avg_slippage':avg_slippage,'avg_fill_rate':avg_fill_rate,'total_executions':len(self.executions)}# 使用示例monitor=ExecutionMonitor(api)stats=monitor.get_execution_stats()ifstats:print(f"平均滑点:{stats['avg_slippage']:.4%}")print(f"平均成交率:{stats['avg_fill_rate']:.2%}")

九、总结

9.1 执行优化要点

要点说明
滑点控制控制执行滑点
算法选择选择合适的执行算法
时机选择选择最佳执行时机
成本优化优化总执行成本

9.2 注意事项

  1. 流动性- 考虑市场流动性
  2. 成本平衡- 平衡滑点和手续费
  3. 执行速度- 平衡执行速度和成本
  4. 持续监控- 持续监控执行质量

免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:22:06

快手可灵宣告Vibe AIGC来临:模型竞赛转向智能体编排

继 Vibe Coding 之后&#xff0c;南京大学、快手可灵提出了 Vibe AIGC。生成式 AI 创作者正在从炼丹师升级到建筑师。单纯依赖提示词抽盲盒的时代即将终结&#xff0c;一个由智能体编排驱动的 Vibe AIGC 新纪元已然开启。过去&#xff0c;生成式 AI 是以模型为中心的参数竞赛&a…

作者头像 李华
网站建设 2026/4/16 14:45:16

算泥MVP直播 | 让科研像聊天一样简单,AI 科研高效通关指南

还在为科研写论文、申基金绞尽脑汁&#xff1f;还在对着 AI 工具无从下手&#xff0c;浪费大量时间在低效操作上&#xff1f;算泥社区特邀北京航空航天大学高研院副教授何静&#xff0c;带来 AI 科研高效实操直播。何静老师深耕科研领域&#xff0c;兼具扎实学术功底与丰富 AI …

作者头像 李华
网站建设 2026/4/15 9:16:19

吐血推荐!千笔·专业论文写作工具,MBA论文必备神器

你是否正在为MBA论文的选题而焦虑&#xff1f;是否在撰写过程中反复修改却难以达到理想效果&#xff1f;文献查找耗时费力&#xff0c;格式排版总出错&#xff0c;查重率又让人揪心……这些困扰是否让你感到力不从心&#xff1f;别再独自挣扎&#xff0c;千笔AI——专为学术写作…

作者头像 李华
网站建设 2026/4/19 3:24:38

构建科技成果高效转化新路径——成果转化智能顾问赋能全链条服务生态

在当今科技飞速发展的时代&#xff0c;科研成果的转化效率直接关系到国家创新能力的提升和经济高质量发展。然而&#xff0c;长期以来&#xff0c;技术评估困难、市场需求匹配不精准、成果推广能力弱以及成果筛选与资源对接依赖人工等问题&#xff0c;严重制约了科技成果从实验…

作者头像 李华
网站建设 2026/4/17 23:16:32

基于django的地方旅游宣传系统的设计与实现vue酒店商城 景点餐饮

目录摘要内容系统功能模块技术实现要点创新特色项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要内容 基于Django和Vue.js的地方旅游宣传系统整合了酒店商城、景点推荐和餐饮服务功能&#xff0c;旨在为…

作者头像 李华