价格在开仓bar内来回震荡,跟踪止损怎么做? [开拓者 TB]
- 咨询内容:
本帖最后由 myvars 于 2016-4-28 12:15 编辑
价格在开仓bar内来回震荡,跟踪止损怎么做?
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
上面这段是TB系统帮助里边的跟踪止损的代码,按此代码运行,因忽略了开仓bar最高价和最低价的获取和判断,会有点问题,
但实际情况开仓bar对交易来说是很重要的bar。
问题:
1、因忽略开仓bar,开仓bar未进行止损;
2、开仓bar之后的K线,获取的最高价是开仓bar的开仓价AvgEntryPrice,而不是真实的开仓bar的最高价。
现在以多单为例,设置50个点的止损:
按上面的代码执行,则可能会出现这样的情况,
如果开仓bar的开盘价open是2990,以开仓价AvgEntryPrice:3000买入建多仓,
接下来,价格先上升到本条bar的最高价high:3080,然后回落到最低价low:2980。收盘价close:2985
第二条bar的open:2985,价格持续下落,那么第二条K线会以AvgEntryPrice:3000作为最高价进行止损判断,要到2950才会做出止损动作。
这样会导致原来应该在3030处出仓止损,变成了到2950才止损。由原本可以盈利成亏损。
3、假如解决了可以在开仓bar上的3030出实现止损,那么在开仓bar,如果价格一直在开仓价和止损价范围来回震荡(2980~3060),系统是否会一直开仓止损、开仓止损、开仓止损?
有看到的朋友请帮忙指点一下,谢谢!
附图说明:
1为开仓点;
2应该为止损处;
3是实际止损处。
- TB技术人员:
1,是的,没有在开仓bar上做止损。因为历史K线上是没法判断最高价与开仓价先后出现的顺序 ,不好判断。只能放到下一个bar去平仓。
2,如上,没法判断最高价是在开仓前出现的还是开仓后出来的。。如果是之前 出来的,此最高价就不能做为开仓后最高价了。
3,TB的机制里,同一个bar上的同一个信号只会委托交易一次,不会反复开平仓。 - TB客服: 自己重新定义一个开仓价变量,把最后开仓价赋值给他,代替AvgEntryPrice,就能实现点2止损了。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容