为什么 vol_pre_5d = 0,请老师解答,完整代码如下

/------------------------------------------------------------------------ // 简称: jiaoliu // 名称: 交流 // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Params //此处添加参数 numeric num_minute(345); Vars //此处添加变量 numeric vol_pre_5d; // 前五日每分钟成交量 series<numeric> vol_ratio_minute; // 每分钟量比 Defs //此处添加公式函数 Events //此处实现事件函数 OnBarOpen(ArrayRef<Integer> indexs) { vol_pre_5d = Summation(data1.v[1],5) / (5* num_minute ); // data1 日线 求过去5日每分钟成交量 } //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { vol_ratio_minute = vol / vol_pre_5d; Commentary("量比="+text(vol_ratio_minute)); Commentary("vol_pre_5d="+text(vol_pre_5d)); Commentary("data1.v[1]="+text(data1.v[1])); Commentary("num_minute="+text(num_minute)); Commentary("Summation(data1.v[1],5)="+text(Summation(data1.v[1],5))); Commentary("5* num_minute="+text(5* num_minute)); } //------------------------------------------------------------------------ // 编译版本 2022/04/15 125645 // 版权所有 agtd30000 // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

谢谢二位,又忘了全局变量的问题

vol_pre_5d 是一个局部变量,是不能跨域传递的,你在onbaropen里赋值,onbar里是获取不到的

Global numeric vol_pre_5d; 13行这个变量声明要变成全局变量,,,这个是不同的事件域,建议看一下官网视频,变量和事件域的知识