: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

再谈TB信号丢失

再谈TB信号丢失

  1.   之前博文“我对关于TB交易信号丢失的理解”中谈到由于没有处理到一根bar上最后一个tick数据,从而丢失了图表交易信号。最近在TB开发的过程发现,导致图表交易信号丢失还不止这个原因,有时莫名其妙的也会丢失,本文不再讨论其原因,因为牵扯TB内部机制的原因不好去探究,也没有太大必要,我仅讨论一下信号丢失后会出现的一些问题。
  2.     之前,我还是说说TB提供给用户的接口分图表接口和交易接口(我自己命名的,不知道准确不)。图表接口就是和超级图表相关联的系统变量,函数等等,比如buy(),MarketPosition,EntryTime等。而交易接口就是单纯相关于账户的交易的一些函数,就是我们通常所说的A_开头的函数,比如A_SendOrder,A_OrderBuyOrSell,A_OpenOrderTime等。图表接口和交易接口其实是相关联的,我理解的是图表接口将交易接口封装其内,包括了:1,某些逻辑控制;2,调用交易接口进行交易;3,绘图等步骤。举个例子,buy函数内部可能就做了以下操作:
  3. Bool Buy(Numeric Share=0,Numeric Price=0)
  4. {
  5. //逻辑控制:
  6.     1.每根Bar上只进行一次交易
  7.     2.MarketPosition = 0 时,该函数按照参数进行多头建仓。
  8.     如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数平掉所有空仓,同时按照参数进行建       仓,两个动作同时发出。
  9.     如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。
  10. 当委托价格超出k线的有效范围,在历史数据上,将会取最接近的有效价格发单;在实盘中,将会按照实际委托价格发单。
  11. //调用交易接口:
  12. A_SendOrder(Enum_Buy,Enum_Entry,Share,Price)
  13. //绘制交易信号,盈亏连线等
  14. }
  15.     而A_开头的交易接口则直接与交易平台接口相关联,对于其调用,功能相对独立,没有封装太多的处理,封装的部分也仅仅和交易所回报相关。
  16.     因此,图表接口用于历史回测,交易接口用于实盘交易。虽然这句话反复的在各个TB教程里提及,不过很多使用者仍没有好好理解,因此在程序开发的过程中出现问题,特别就是前面所提及的信号丢失的问题,下面我们就来讨论。
  17.     举个例子,MarketPosition,每个人都知道,当MarketPosition值为-1时,当前位置为持空仓;0,当前位置为持平;1,当前位置为持多仓。 有很多示例代码也这样表示:
  18. If(MarketPosition==1) // 有多仓的情况
  19. {
  20.     if(满足策略条件)
  21.     {
  22.     sell();//平仓
  23.     }
  24. }
  25.     这种代码片段乍一看一点问题也没有,不过在交易信号丢失的时候,问题就大了。我们知道,在实盘中,最后一根bar上的每一个tick信号到来时,程序都将执行一次,这时如果触发了buy函数,他还是会调用交易接口去交易的,只是交易成功后,后面的tick数据再触发buy函数时,由于上文讨论到的内部封装的逻辑控制“每根Bar上只进行一次交易”,因此不会重复发单而已。然后,当最后一个tick到来形成最后一根bar时,不论是什么原因只要是造成了交易信号丢失,那么就算是之前你buy成功了,也就是说持仓是多仓,MarketPosition仍然为0,因为MarketPosition是图表接口的变量,他的值取决于图表上的信号。
  26.     这样的话,你已经持有多仓,结果If(MarketPosition==1)永远不能满足,你的平仓条件就设为虚有了。
  27.     总之,图表接口只用于历史回测,以及在实盘中基于图表数据的一些策略编写,交易策略以及执行,必须用A_函数自行控制。比如上述代码段改为:
  28. LastIndex=A_GetLastOrderIndex(Enum_Buy,Enum_Entry);//获取上一个开多仓的报单索引
  29. if(A_OrderStatus(LastIndex)==Enum_Filled)//报单已经成交,也就是说开多仓成功的情况
  30. {
  31.     if(满足策略条件)
  32.     {
  33.     //平仓
  34.     }
  35. }
复制代码

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表