如何获取最近一次满足条件的Bar的收盘价

需求:本指标订阅了多个图层,现需要获取data1层(60分钟)的数据,获取距今最近一次白色MA1与紫色MA3金叉时,获取对应Bar的收盘价A。同时以A点的价格画出一条水平价格线。并用该价格A与最新的收盘价B计算比值()。问题:我的代码如下,要求输出的这个A值本来应该是我下图箭头所指的K线的收盘价,但目前这个A值输出为0,没有达到我想要的结果。不知道是哪里写错了,求助。Params //此处添加参数 //Numeric millsecs(1000);Vars //此处添加变量 //Numeric avg; //Global Integer timerId; Series<Numeric> MA1; Series<Numeric> MA2; Series<Numeric> MA3; Series<Numeric> bizhi; Series<Numeric> A;Events //初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作 OnInit() { //与数据源有关 Range[0:DataCount-1] { SubscribeBar( Symbol, "1h", BeginDateTime ); } } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { //avg=calcAvg(high,low); MA1 = Data[1].MA(Data[1].Close,5); MA3 = Data[1].MA(Data[1].Close,20); If( Data[1].CrossOver( MA1 , MA3 ) ) { A = Data[1].Close; bizhi= Close / Data[1].Close ; } PlotNumeric("A",A);//这个A值本来应该是我下图箭头所指的K线的收盘价,但目前这个A值输出为0,没有达到我想要的结果 PlotNumeric("MA1",MA1); PlotNumeric("MA3",MA3); }

你这段代码其实等效于 data0.MA1 = Data[1].MA(Data[1].Close,5); data0.MA3 = Data[1].MA(Data[1].Close,20); If( Data[1].CrossOver( data1.MA1 , data1.MA3 ) )自己看看问题在哪里?

回复:感谢帮助,明白了🤝

没弄清图层你对data0 的MA1和MA3 赋值了但没有对data1 的MA1和MA3 赋值但你的条件Data[1].CrossOver( MA1 , MA3 ) 计算的又是data1的金死叉

回复:这个图很清晰,明白了,感谢指导🤝

回复:你说得比较清楚了

回复:王老师 你很久没夸我了

回复:😁