想做精细的交易控制?您需要用好OnTradeDeal函数

论坛 期权论坛 期权     
真格量化   2019-11-18 11:34   3571   0
部分用户反映对真格量化的两个事件监听函数OnOrderChange(委托回报事件)和OnTradeDeal(成交回报事件)还不熟悉,不知道委托指令下达后应当如何用这两个函数对其进行状态跟踪和控制。我们将在这篇文章里用一个简单的例子来说明它们可以如何帮助交易者控制下单顺序,进行对交易的精细化控制。


假设一个交易者有一个名为“ABC”的策略,即他需要按顺序(且间隔1分钟)买入一号大豆(A),二号大豆(B)和玉米(C),在前一个合约成交之前后一个合约不能下单。






这个例子需要我们去依次判断各个合约的成交状态,与常见的两腿或多腿先后套利有相似之处。比如先后套利也会要求成交难度较大的”不活跃腿“先成交,确定其成交后才去交易”活跃腿“。这个例子的方法能够比较容易地应用在多腿”先后套利“、期权波动率套利或者更复杂的期权组合交易这类需要精细交易控制的策略上。


报单顺序控制还可以用于其它场景中,例如:




为实现这个策略,我们可以采用这个简单的程序结构:






在OnStart部分,我们初始化状态变量。我们后边可以用状态变量来记录这些合约是否已经成交,比如:

对于数组g.tradedflag里的元素,如果未成交,其值就是0,已经成交,其值就是1。在OnStart部分我们可以先将其都初始化为0。


然后我们在OnMarketQuotationInitialEx(行情初始化)部分订阅合约:

这里我们只需要订阅其中的一个合约(比如一号大豆)即可驱动行情。


在OnBar部分,我们进行合约状态变量判断并交易。如果要处理的合约数量更多,也可以考虑写成对状态变量数组的循环。

注意在交易部分我们是在使用g.tradedflag里的元素(状态变量)进行成交状态判定。


这些状态变量的改变可以在OnTradeDeal函数里进行:

一个合约成交后,系统马上在OnTradeDeal函数部分改变其状态变量(由0改为1)。


这些代码就能实现”ABC“的按顺序交易结果:




有些用户也许会问为什么不在OnBar部分进行查持仓(GetPositions)的判断呢?这个就涉及到效率问题(虽然我们这个例子并不要求高效率)。






我们在这篇文章里已经介绍过,对于期货交易所,其行情通过广播模式发送。而委托回报、成交回报、错单等与交易者自身账户相关的信息通过私有通讯模式推送。登入、各项查询、报单、撤单使用对话通讯模式。


如果我们在受行情驱动的OnBar或OnQuote部分也去查询持仓来进行状态变量变更,那就较容易出现效率损失,我们可以用下图显示差异:

机智的用户可能已经发现,如果我们的交易和行情不相关,而只和委托、成交状态变化有关的话(比如对于一个套利头寸,第一腿已经成交,第二腿需要以最快速度去成交,其交易条件可视为与行情无关),那都可以放到OnTradeDeal或OnOrderChange部分进行,因为即使是订阅Tick行情,我们在两次行情快照之间也有500毫秒的“漫长“等待时间。而在对话通讯模式和私有通讯模式则只取决于网络及柜台自身的通讯速度和流控措施,通常只有1~2毫秒的延时,会比在OnBar或OnQuote坐等行情驱动节约大量时间。



感兴趣的读者还可以在系统日志看看系统是如何对委托和成交进行记录:

投资者应当注意,OnOrderChange会监听委托回报和委托单变化(比如部分成交)这些信息,而OnTradeDeal只监听成交回报,两者监听的信息(委托对象和成交对象)可以用orderid来关联起来。




投资者为了设计简洁考虑,可以只用OnTradeDeal来监听成交信息,来节约频繁去判断OnOrderChange推送的委托对象状态信息。而策略还涉及到撤单时,我们就需要多利用OnOrderChange函数来检查委托的可撤状态了。




需要提升交易效率或控制更多交易细节的投资者,不妨试试本文介绍的方法。


— — — — — — E N D — — — — — —
往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法
如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战
如何构建知识图谱
机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍



真格量化可访问:
https://quant.pobo.net.cn


真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887





























分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:870
帖子:180
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP