- 精华
- 0
- 在线时间
- 64 小时
- UID
- 235653
- 积分
- 19
- 帖子
- 15
- 阅读权限
- 200
- 注册时间
- 2016-5-31
- 最后登录
- 2021-8-31
- 精华
- 0
- UID
- 235653
- 积分
- 19
- 帖子
- 15
- 主题
- 2
- 阅读权限
- 200
- 注册时间
- 2016-5-31
- 最后登录
- 2021-8-31
|
本帖最后由 kyover 于 2019-11-21 13:37 编辑
deyintouzi 发表于 2019-11-19 16:13
先谢过这位大哥,不过我的代码输出的内容是上一个bar的收盘价,这是按理说应该是一个定值,所以两个图层 ...
你还是没弄明白onbaropen的驱动机制 我给你讲个实际例子吧
现在有a、b两个图层 每个图层都有两根bar
a.close1 表示a图层的第1根bar的收盘价
b.close2 表示b图层的第2跟bar的收盘价
以此类推
当前2个图层分别有2根bar,这个时候由于2个合约接受新数据的时间不一定一致,假定a图层先出现了新的bar,那么此时的onbaropen是由于a图层出现新bar驱动运行,因为a图层出现了新的bar,那么在这新的第3根bar上,close[1]实际代表的是a.close2,也就是a图层的第2根bar的收盘价
所以fileappend输出的实际上是
data0.close[1] == a.close2
而b图层并没有出现新的bar,所以
data1.close[1] == b.close1
这个时候,图上是有5根bar的,a图层3根,b图层2根
接下来,b图层收到新数据,驱动onbaropen运行
那么此时,图上有6根bar了,a图层3根,b图层3根
这个时候
data0.close[1] = a.close2
data1.close[1] = b.close2
所以第1行的输出不变,而第2行的输出变化了,从b.close1变成了b.close2
你可以去验证一下对不对
如果是第1行变了,那说明图层2数据来的更快一点
|
|