龙听期货论坛's Archiver






 微信: QQ:

龙听 发表于 2017-2-28 11:04

我对关于TB交易信号丢失的理解

[color=#464646][font=simsun]最近和朋友讨论了很多关于TB交易信号丢失的问题,即从bar数据看满足了交易条件,应该发出交易信号,但是实际上图表显示又没有发出交易信号。[/font][/color]
[color=#464646][font=simsun]比如写的代码逻辑是:[/font][/color]
[color=#464646][font=simsun]if(close>close[1])[/font][/color]
[color=#464646][font=simsun]{[/font][/color]
[color=#464646][font=simsun]buy(...)[/font][/color]
[color=#464646][font=simsun]}[/font][/color]
[color=#464646][font=simsun]从形成的bar看来,close明明是大于close[1]的,[/font][/color][color=#464646][font=simsun]但并没有执行buy(...)而显示交易信号。[/font][/color]
[color=#464646][font=simsun]我实验并总结了一下其中的原因,主要有两个可能性:[/font][/color]
[color=#464646][font=simsun]1.程序代码段过长,最后形成bar的ti[/font][/color][color=#464646][font=simsun]ck数据到来时被丢失了。[/font][/color]
[color=#464646][font=simsun]2.TB的一些保留变量在最后一个tick数据到来时,被系统更改了值,而影响了程序的执行。[/font][/color]
[color=#464646][font=simsun]先说第一种情况。[/font][/color]
[color=#464646][font=simsun]。。。//这里的程序很长[/font][/color]
[color=#464646][font=simsun]。。。//[/font][/color]
[color=#464646][font=simsun]if(close>close[1])//没有执行到[/font][/color]
[color=#464646][font=simsun]{[/font][/color]
[color=#464646][font=simsun]buy(...);[/font][/color]
[color=#464646][font=simsun]}[/font][/color]
[color=#464646][font=simsun]就如示例所说,由于if(close>close[1])前面的程序很长,当最后一个tick到来确认了bar的close的时候,前面的程序还没有执行完,所以就被丢失掉了,即使close>close[1]了,也没有在这根bar上执行buy(...),而进入了下一根bar,所以本该在这根bar上显示的交易信号也被丢失掉。[/font][/color]
[color=#464646][font=simsun]再说第二种情况,TB里面有很多系统维护的保留变量,比如BarStatus,A_BuyPosition等等,在最后一个tick数据到来的时候,系统要对其作出修改。比如BarStatus,当最后一个tick数据到来前,系统认为这根bar为最后一根bar,因此BarStatus==2,但最后一个tick数据到来后,下一个tick数据到来前,系统认为这根bar已经为倒数第二根bar了,因此将修改BarStatus的值为1。如果程序里面有:[/font][/color]
[color=#464646][font=simsun]if(BarStatus==2&&close>close[1])[/font][/color]
[color=#464646][font=simsun]{[/font][/color]
[color=#464646][font=simsun]buy(...);[/font][/color]
[color=#464646][font=simsun]}[/font][/color]
[color=#464646][font=simsun]这样的代码,当最后一个tick数据到来时,是不会执行buy(...);的,所以即使close>close[1]了,也没有在这根bar上执行buy(...),所以本该在这根bar上显示的交易信号也被丢失掉。[/font][/color]

[color=#464646][font=simsun] 再如A_BuyPosition,系统只会对最后一根bar维护其值,所以当最后一个tick数据到来后,下一个tick数据到来前(最后一根bar还没有形成),A_BuyPosition将会是无效值。如果程序里面有:[/font][/color]
[color=#464646][font=simsun]if(A_BuyPosition>0&&close>close[1])[/font][/color]
[color=#464646][font=simsun]{[/font][/color]
[color=#464646][font=simsun]buy(...);[/font][/color]
[color=#464646][font=simsun]}[/font][/color]
[color=#464646][font=simsun]这样的代码,当最后一个tick数据到来时,是不会执行buy(...);的,所以即使close>close[1]了,也没有在这根bar上执行buy(...),所以本该在这根bar上显示的交易信号也被丢失掉。[/font][/color]
[color=#464646][font=simsun]下图是我实验的结果:[/font][/color]
[url=http://photo.blog.sina.com.cn/showpic.html#blogid=56e7157f0101610o&url=http://s6.sinaimg.cn/orignal/56e7157fxc2810e352da5][img=0,179]http://s6.sinaimg.cn/middle/56e7157fxc2810e352da5&690[/img][/url]
[color=#464646][font=simsun]我选取的bar是一分钟k线,可以看到,当使time=0.132700(代表13:27)更新到time=0.132800(代表13:28)的最后一个tick数据到来,驱使程序执行时,BarStatus值由2变为1,[/font][/color][color=#464646][font=simsun]A_BuyPosition由6变为N/A(无效值)。[/font][/color]

[color=#464646][font=simsun] 因此,在使用TB编写程序的时候,要尽量规避以上[/font][/color][color=#464646][font=simsun]谈到的两种问题,后面我会讲到[/font][/color][color=#464646][font=simsun]如何规范编程以避免出现以上问题。[/font][/color]

页: [1]
渠道·推广(20年运营值得信赖!)▼:温馨提示:期货论坛稳定、流畅的访问体验有赖于赞助商的广告支持,赞助商业务内容非本站官方业务,期货、证券及外汇投资均有亏损的风险,访问赞助商广告即代表您已了解其中的风险。欢迎意向赞助商联系客服或管理员咨询相关事宜。
                     
❤️2025年通过期货论坛开户享受如下优惠政策:政策一:手续费最低交易所+1分起,政策二:日内炒单及大资金享更高比率返还,政策三:保证金可申请交易所标准+0,政策四:开户即享有论坛Prime会员资格(价值199元/年),开户咨询管理员或右侧客服! 😋欧美期货杂志购买、下载与中文翻译:/thread-10603-1-1.html |TB/MC开户优惠政策:/thread-5986-1-1.html2025年最新交易所手续费表:/thread-7537-1-1.htmlSC2.png2025年最新中文翻译:/thread-160355-1-1.html;
欧美期货程序化期刊中文翻译目录: 【1982/83.01-12期】 【1984.01-12期】 【1985.01-12期】 【1986.01-12期】 【1987.01-12期】 【1988.01-12期】 【1989.01-12期】 【1990.01-12期】 【1991.01-12期】 【1992.01-12期】 【1993.01-12期】 【1994.01-12期】 【1995.01-12期】 【1996.01-12期】 【1997.01-12期】 【1998.01-12期】 【1999.01-12期】 【2000.01-12期】 【2001.01-12期】 【2002.01-12期】 【2003.01-12期】 【2004.01-12期】 【2005.01-12期】 【2006.01-12期】 【2007.01-12期】 【2008.01-12期】 【2009.01-12期】 【2010.01-12期】 【2011.01-12期】 【2012.01-12期】 【2013.01-12期】 【2014.01-12期】正在更新中...... 【2015.01-12期】待补 【2016.01-12期】待补 【2017.01-12期】正在更新中...... 【2018.01-12期】 【2019.01-12期】 【2020.01-12期】 【2021.01-12期】 【2022.01-12期】 【2023.01-12期】 【2024.01-12期】 【2025.01-12期】正在更新中......