If(Time>=0.1455 && Time<0.15)
{
If(MarketPosition<>0)
{
Sell(0,0); // 市价平多
BuyToCover(0,0); // 市价平空
Commentary("尾盘清仓,目前仓位:" + Text(MarketPosition));
}
}5分钟周期运行策略,尾盘清仓代码可以正常执行;策略周期换成30分钟就不执行了,也无警告消息。请问为什么?
time默认返回的是bar开盘时间。
如果是30分钟,那么靠近收盘的那几根bar,大概是0.1400,0.1430
哪一根都比0.1455小
谢谢老师,onbar()的说明文档是:对于历史BAR是每根BAR只运行一次,对于实盘行情正在形成的BAR则每接收到一个新的TICK都会运行一次。
应该能get到0.1455吧?
不能
把 bar时间理解为bar的唯一标签,是离散的,是在k线横坐标看得到的数值
不是连续的,历史的不是 ,实时的也不是
连续的是currenttime 这种
我觉得我上面其实说的很清楚了。
我再说一遍
time默认返回的是bar开盘时间。
请问30分钟k线,哪一根bar的开盘时间可以比14点55分大?请你列举出来
感谢老师指点!我是新手,对bar的运行机制了解的不够。参考您的另一篇帖子用OnBarClose解决了,非常感谢!
感谢老师点评!我是新手,对bar的运行机制了解的不够。就是说每根bar的每个tick接收一次行情数据,但结构体内的程序只在开始的时候运行一次?
你也不新了,我对你这个id早就有印象了,最少半年前我就应该给你发过零基础课程了吧....
Time是bar时间
你可以print一下 30分钟周期最后一个bar 可能是1445 1430 或者其他,看你怎么切割k线的
但不太可能大于0.1455
谢谢!追问同上
就是说每根bar的每个tick接收一次行情数据,但结构体内的程序只在开始的时候运行一次?
【回复】:程序也是每个tick运行,问题不是因为没有每个Tick运行,而是因为判断的时间是BAR的开始时间,30分钟,最后一根K线的开始时间是0.1430,永远不可能是0.1455