关于一个跨周期的新均线交叉的显示问题
刘风老师有一期《跨周期内容专题答疑20211111》,是把data1的5周和10周线写入一个一维数组,然后用data0的1分钟小周期的K线high或low替换最新一个数组值,计算这个数组的均线,显示在data0上。但我照写后,data0写入的均线一直不对,请教下老师错误在哪里,我感觉数组写入错误,均线是错的。具体代码、自定义函数和K线图如下:Params Numeric length1(5); Numeric length2(10); Numeric lots(1);Vars Numeric ma1; Numeric ma2; Array<Numeric> myarray1; //对应ma1数值 Array<Numeric> myarray2; //对应ma2数值 Numeric price; Bool booll; Bool boolshort;Events OnInit() { SubscribeBar(data0.Symbol,"5m",data0.BeginDateTime); SubscribeBar(data0.Symbol,"10m",data0.BeginDateTime); } OnBar(ArrayRef<Integer> indexs) { Range[1:2] { ma1 = Average(close,length1); ma2 = Average(close,length2); PlotNumeric("ma1",ma1); PlotNumeric("ma2",ma2); } data1.Seriestoarray(data1.close,length1,data0.myarray1); data1.Seriestoarray(data2.close,length2,data0.myarray2); If(data1.ma1 > data1.ma2) { data0.myarray1[0] = low; data0.myarray2[0] = low; } If(data1.ma1 < data1.ma2) { data0.myarray1[0] = high; data0.myarray2[0] = high; } ma1 = AverageArray(myarray1); ma2 = AverageArray(myarray2); PlotNumeric("ma1",ma1); PlotNumeric("ma2",ma2); booll = CrossOver(data0.ma1,data0.ma2); boolshort = CrossUnder(data0.ma1,data0.ma2); //SummationArray(myarray2) - myarray2[0] + price = 2*(SummationArray(myarray1)-myarray1[0]+price) price = SummationArray(myarray2) - myarray2[0] - 2*(Summationarray(myarray1)-myarray1[0]); If(MarketPosition<>1 and booll) { buy(lots,price); } If(MarketPosition<>-1 and boolshort) { SellShort(lots,price); } } 其中Seriestoarray函数如下:Params series<Numeric> price(1);//close价 Numeric length(10);//默认往前回溯10个 ArrayRef<Numeric> result;//定义一个数组Begin Numeric i; for i = 0 to length-1;//定义个循环变量 { result[i] = price[i]; } Return True; //开始建的数值型函数,返回值0,错了EndK线图如下:两条均线应该一个把某close除了5,一个除了10,成两条直线,因为数值跨度大,把1分钟k线压缩在最上面非常感谢,困扰几天了!