转 不深刻理解TB执行流程,你永远都想不明白你的交易信号怎么 心里不明白不理解

不深刻理解TB执行流程,你永远都想不明白你的交易信号怎么会消失的

-----------------------正文开始----------------------

断断续续接触TB一个多月了,乍看之下,TB似乎比较简单,就是一个Bar一个Bar地去运行自
己编写的公式。
通过模拟帐户测试了一段时间,才发现有很多东西需要进一步去弄清楚。

问题:TB在历史数据测试中的运行机制和交易时间的运行机制有何区别?
下面是我的理解,请大家来不断修改和完善。我认为,很多交易程序中的问题,都是由于对
TB的运行机理不清楚而埋下了隐患。

【在历史数据测试时】假设商品样本中有2000条K线,TB的执行过程是:
1、先显示出2000条K线。此时,由于有历史数据,每根K线的数据都是现成的。最后一根K线
,也是历史数据。所有的数据都是静止的,也没有新的数据进来。
2、从第一条K线开始(最左边的一条),开始执行交易公式,读取参数值。然后,初始化局
部变量,执行begin和end之间的代码。
3、然后,进入下一根K线(Bar),再初始化局部变量,执行begin和end之间的代码。
4、依次处理所有的K线。
5、在某根K线上,发现符合开仓条件,于是在超级图表上显示出开仓标识,并修改
marketposition的值。
6、继续运行下面的K线。
7、在某根K线上,发现符合平仓条件,于是在超级图表上显示出平仓标识,并在开仓和平仓
价之间画出连线。若该笔交易盈利,则用红色连线,若该笔交易亏损,则用绿色连线。
8、继续运行后面的K线,直到最后一条。
值得注意的是:
1、由于是历史数据,每根Bar都是现成的,是没有Tick的概念的。交易代码,在每根bar上
运行一遍。
2、由于参数是不能动态改变的,所以,虽然也是程序代码的一部分,但没有必要在每根
Bar上都读取一次。只在第一根Bar上读取参数,以后共用即可。
3、由于是历史数据,不会再发生改变,所以,不会出现信号时有时无的现象。
4、由于是历史数据,没有买卖盘的动态数据,所以,不会出现滑点,也不会出现成交不了
的现象。
【转】不深刻理解TB执行流程,你永远都想不明白你的交易信号怎么 心里不明白不理解

【在交易时间前启动自动交易】假设商品样本中有200条数据,假设在开盘前2分钟启动TB的
自动交易,TB的执行过程是:
1、对于已经存在的200条K线,第一根的BarStatus是0,中间的是1,最后面一根是2。对于
BarStatus小于2的K线,只在每根Bar上运行一次交易代码。
2、从第一根K线,直到第200根K线,在每根K线上运行一次交易代码。如果发现某些K线符合
开仓或平仓条件,只是显示标识符号,但不实际发出交易指令,因为还没开盘。
3、开盘后,分笔交易数据(tick)开始传过来。为了保持实时性,TB就必须对每个tick做
出响应,就是在每个tick都运行一次程序代码。
由此可见,交易时间里,每根最新的Bar上,程序代码都被多次执行。这一点,和历史数
据测试时明显不同。
4、由于在最新的一根bar上,交易代码反复被Tick数据触发,而此时下一根bar还没出现,
这条Bar的数据中,除了开盘价之外,其他的比如:收盘价、最高价、最低价都在随着每个
Tick的变动而变动。当下一根K线出现的瞬间,这条Bar的所有数据才能被确定下来。
如果交易代码中的开平仓条件中,用到了close、high、low,则有可能使信号时有时无。同
样的一根Bar上,由于主力的拉升,价格突然走高,符合了买入条件,该Tick出现后,交易
代码执行一次,发现符合买入条件,就发出买入指令。下一笔,价格又被打压下来,再次执
行交易代码,买入条件又不符合了,但刚才的买入指令已经发出去了,甚至已经成交了。价
格如此反复几次,就会在该Bar上反复买入多次。从而形成反复开仓。如果该Bar最终定型时
,价格被打压回来了,超级图表上在该Bar上是不会显示任何交易信号的,但实际上,却在
该Bar上买入了多次。

【在交易时间内启动自动交易】假设商品样本中有200条数据,假设在开盘后2分钟启动TB的
自动交易,TB的执行过程是:
1、读取出200条Bar,其中,有2条还是开盘后刚产生的。
2、在前199根Bar上,每根Bar上执行一次交易代码。如果发现某些Bar上符合开平仓条件,
仅仅显示交易信号,但不实际发出交易指令。因为你迟到了,刚才的行情已经成为历史了。
3、在新的Bar上,依据Tick去运行交易代码。
由此可见,TB的交易指令,应该只能在Barstauts=2且有行情数据时才能发出。这一点,应
该是TB内部的运行机制,不需要我们在TB代码中去再写一遍。


根据以上的分析,可得知:
1、如果交易代码中,在开平仓指令外假如if(barstatus==2),则在历史数据测试中,就
不会显示出交易信号。因为除了最后一根bar之外,前面的Bar都不复合条件。但这样的代码
,在交易开始后,是可以正常运作的。
问题是,加上这个条件有什么用呢?
在历史数据测试中,加上显示不了信号;在交易时间,TB又仅仅处理最新的一根Bar中的
Tick,加了也没用。经常看到别人在代码中加上barstatus==2,不知道是想干什么用。
2、使用最新Bar的数据去做判断(Open除外),容易引发误开仓或反复开仓。要消除,在买
卖条件中,就只能用前面K线的数据去做判断,或使用high>high[1],low

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/162919.html

更多阅读

美白的方法,美白小窍门 眼睛变大的自然方法

美白的方法,美白小窍门——简介 在这个时尚社会中,雪白水嫩的肌肤已经成了审美标准之一。几乎每个爱美的女性都不会拒绝让自己再白一点。为了让肌肤更白一些,让自己更加漂亮一些,大部分女性都在尝试着各种各样的美白的方法。今天小编会

转自步步贴吧—若曦,你欠了八爷的情 步步惊心 八爷 若曦

从看清宫文开始,就喜欢四四,爱了那么多年,从未动摇过。可是,步步惊心里的八爷,改变了这一切。他让我第一次喜欢上了八爷。四四,仅此一次,对不起。我自己文笔不行,亦没有看那么透彻,所以借步步贴吧里一篇文来表达对八爷的感情。文略乱,后面

声明:《转 不深刻理解TB执行流程,你永远都想不明白你的交易信号怎么 心里不明白不理解》为网友扁舟载月分享!如侵犯到您的合法权益请联系我们删除