Events OnBar(ArrayRef<Integer> indexs) { //...
If((TradingDate[-1] != InvalidInteger && TradingDate!= TradingDate[-1]) || (TradingDate[-1] == InvalidInteger && TradingDate< CurrentDate))
{
Sell(0,Close);
BuyToCover(0,Close); }Else If(TradingDate== CurrentDate && Time == 0.1455 && CurrentTime >= 0.1459)
{
Sell(0, Close);
BuyToCover(0, Close); } //... }
【注意事项】
本例是以国内商品期货交易所收市时间举例,股指期货或其他市场需调整写法。
本例是针对5分钟周期的收盘平仓所写,针对不同的周期需改写为合适的最后Bar时间。
老师好!
我想解决这个问题:针对不同的周期需改写为合适的最后Bar时间。
一个品种我有多个周期,如果每个周期都改写最后Bar时间就很麻烦,我试着把这句
Else If(TradingDate== CurrentDate && Time == 0.1455 && CurrentTime >= 0.1459)
改写成
Else If(TradingDate== CurrentDate && CurrentTime >= 0.1459)
省略了&& Time == 0.1455
结果导致策略单元里的多单信号还在
而图表上的多单却已经平仓了
监控器里也少了多单信号
这是怎么回事,应该如何解决?谢谢老师
收盘平仓建议直接用onbarclose作为实盘的载体
老师,您举的例子是5分钟周期的情况,如果要各个周期都通用,比如15分钟、60分钟,有没有更好的办法?
不太能领会你这个问题的意义
首先 无论是5分钟,1小时,如果你是想每天定点收盘平仓,settrigger设置的参数肯定是一样,不需要修改。
如果你是需要每根bar都执行收盘平仓操作,那句正常像onbar一样写罢了,只不过是在每个小节结束的时候用settrigger设置一下这跟小节结束bar的执行时间就行了
感觉你并没有读懂这个东西的机制
如果只是想照葫芦画瓢,却没搞清楚背后的原理,恐怕很难应用吧
老师,我的意思是,5分钟周期是这样写的:
OnBarClose(ArrayRef<Integer> indexs)
{
if(time == 0.1125 or time == 0.1455)
......
那么28分钟周期应该怎样写?写成
if(time == 0.1125 or time == 0.1455)还行吗?
或者要改写成:
if(time == 0.1107 or time == 0.1459)才好?
昨天下午的收盘平仓执行成功,但策略单元里的多单信号还在,监控器里多单信号也在。导致信号和实盘持仓对不上。