Range用法与多周期数据计算

以下代码一Range块会计算几个图层的数据    计算三个周期的MACD指标更推荐哪一种写法?或者是否有更好的写法?请完全解答疑问 给个确切答案   如何计算1m 5分 30分三个周期的MACD指标

OnBar(ArrayRef<Integer> indexs)

   {

       Range[bigLayer1:bigLayer2]

       {

           ma1 = AverageFC(Close, Len1);

           ma2 = AverageFC(Close, Len2);

           PlotNumeric("ma1", ma1);

           PlotNumeric("ma2", ma2);   // <--- 修正4: 将冒号':'改为分号';'


           Commentary("[ma1]" + Text(ma1));

           Commentary("[ma2]" + Text(ma2));


           if(CurrentBar >= MaxBarsBack) barsOk = True;

           Commentary("====================");

           Commentary("[CurrentBar]" + Text(CurrentBar));

           Commentary("[MaxBarsBack] " + Text(MaxBarsBack));

           // <--- 修正5: 修正 Commentary 函数的错误

           Commentary("[barsOK]" + IIfString(barsOk, "K线根数OK", "K线不足"));

       }







   OnBar(ArrayRef<Integer> indexs)

   {

       // --- 主图 (data0) 自身的计算 ---

       Range[0:0]

       {

           // 计算主图 MACD...

           diff = XAverage(Close, FastLen) - XAverage(Close, SlowLen);

           dea = XAverage(diff, SignalLen);

           macd = diff - dea;


           if(CurrentBar >= MaxBarsBack) barsOk = True;

       }


       // --- 30分钟大周期 (bigLayer1) ---

       Range[bigLayer1:bigLayer1]

       {

           // 为该周期的数据源独立计算

           diff_b1 = XAverage(Close, FastLen) - XAverage(Close, SlowLen);

           dea_b1 = XAverage(diff_b1, SignalLen);

           macd_b1 = diff_b1 - dea_b1;

         

           barsOk_b1 = Data[bigLayer1].barsOk;

           

           // 在大周期图层上直接判断

           bool goldCross_b1 = CrossOver(diff_b1, dea_b1);

           bool deadCross_b1 = CrossUnder(diff_b1, dea_b1);

       }

       

           // --- 5分钟中周期 (bigLayer2) ---

       Range[bigLayer2:bigLayer2]

       {

           diff_b2 = XAverage(Close, FastLen) - XAverage(Close, SlowLen);

           dea_b2 = XAverage(diff_b2, SignalLen);

           macd_b2 = diff_b2 - dea_b2;

           

           barsOk_b2 = Data[bigLayer2].barsOk;


           bool goldCross_b2 = CrossOver(diff_b2, dea_b2);

           bool deadCross_b2 = CrossUnder(diff_b2, dea_b2);

       }




Range的用法详解
多周期结构 数据
Range简单用法说明
请教!多品种,跨周期,多图层,RANGE下获取当前品种交易结束时间。
解决多周期信号闪烁导致小周期不计算
跨周期多数据源指标计算代码编写问题
跨周期指标数据计算
帮忙看看多图层用法中在小图层引用大图层的逻辑是否使用未来数据函数了?用法有没有问题?
数组实现多周期数据订阅
onbarblose多周期闪烁,多周期同步