- 精华
- 0
- 在线时间
- 12 小时
- UID
- 202052
- 积分
- 598
- 帖子
- 12
- 阅读权限
- 50
- 注册时间
- 2015-1-20
- 最后登录
- 2015-1-30
- 精华
- 0
- UID
- 202052
- 积分
- 598
- 帖子
- 12
- 主题
- 3
- 阅读权限
- 50
- 注册时间
- 2015-1-20
- 最后登录
- 2015-1-30
|
Q:如何处理讯号出现又消失的情况?
A:有以下两种方式:
1、使用Buy(1,Close,True)这样的格式,将信号延迟到该Bar走完,下一个Bar的第一个Tick出现的时候发送。
这个时候您可以用Buy(1,Close,True),表示的意思是用当前Bar的收盘价在下一个Bar开始时候交易。
您也可以用Buy(1,NextOpen,True),表示用下一个Bar的开盘价交易。
对于上面的这种处理方式,还有另外一种变通的处理,那就是取上一个Bar的条件或数据,只用当前Bar的Open价来进行判断。这样公式会写得更清晰。以下两段代码效果是相同的。- 01.Condition = 您的交易条件;
- 02.If(Condition)
- 03.{
- 04. Buy(1,NextOpen,True);
- 05.}
复制代码- 01.Condition = 您的交易条件;
- 02.If(Condition[1])
- 03.{
- 04. Buy(1,Open);
- 05.}
复制代码 2、第一种处理方式对于时间敏感性不高的系统,是可以采取的,但有些系统,如果选择延迟发送,则会导致比较大的性能下降。
此时我们需要选择另外一种处理方式。使用High,Low,Open这样能够保持住的价格来进行条件判断。
是价格往上的突破形成的交易操作用High来判断。是价格下上的突破形成的交易操作用Low来判断。其他不确定方向的情况最好用Open来判断。
比如,以下两种情况在实时交易方面同样迅速,但后面的就不会出现讯号消失的问题。- 01.AvgClose = AverageFC(Close,10);
- 02.If(CrossOver(Close,AvgClose))
- 03.{
- 04. Buy(1,AvgClose+MinMove*PriceScale);
- 05.}
复制代码- 01.AvgClose = AverageFC(Close,10);
- 02.If(CrossOver(High,AvgClose))
- 03.{
- 04. Buy(1,AvgClose+MinMove*PriceScale);
- 05.}
复制代码 以上信息引于:
TB公式之常见问题(Q&A)!
http://bbs.tb18.net/forum.php?mo ... &fromuid=202052
|
|