【求教】使用非确定不变的数据作为判断条件,有什么办法使信号不消失? [开拓者 TB]
- 咨询内容:
小弟有一难题,求各位大神帮帮!如下:
If(MarketPosition == 1 And BarsSinceEntry >= 1)
{
If(Close < MA1)
{
Sell(0,Close);
}
当K线还在运动时,close 代表的是最新价,而我想要的也是当最新价跌破MA1的时候平仓,
当以最新价平仓后,K线是没有停止运动的,
然而K线停止后,CLose 代表的是收盘价,这样收盘的标示也会随之下移到收盘价的位置,
导致信号标注得不准确(有时候也会导致信号消失),进行回测的结果也是天壤之别!
面对这样的问题,请问该如何解决?谢谢 - TB技术人员:
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.}
此时我们需要选择另外一种处理方式。使用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
- 01.Condition = 您的交易条件;
- TB客服:
CWQ_dylan 发表于 2015-1-29 21:32
Q:如何处理讯号出现又消失的情况?
A:有以下两种方式:
1.因为AvgClose获取的是当前K线的Close,在实盘中Close会随时改变,因此AvgClose是不真实的
2.用H或者L判断,在实盘中不会出现信号消失,但测试结果也是不准的(小周期影响不大,大周期会有很大影响)
3.通过MinMove*PriceScale这种方式增加滑点,也会导致测试结果不准,但影响不会很大
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容