calCRDatas method

dynamic calCRDatas(
  1. dynamic close,
  2. dynamic high,
  3. dynamic low,
  4. dynamic p0,
  5. dynamic p1,
  6. dynamic p2,
  7. dynamic p3,
)

计算CR指标 @param close 收盘点 @param high 最高点 @param low 最低点 @param p0 CR的回溯周期 默认为26(5 <= p0 <= 500) @param p1 MA1的回溯周期 默认为5 (1 <= p1 <= 100) @param p2 MA2的回溯周期 默认为10 (1 <= p2 <= 100) @param p3 MA3的回溯周期 默认为20 (1 <= p3 <= 100)

Implementation

calCRDatas(close, high, low, p0, p1, p2, p3) {
  var resultObj = {};
  var i = 0;
  var size = close.length;
  var midArr = [];
  var crLeftArr = [];
  var crRightArr = [];
  var crArr = [];
  var ma1Arr = [];
  var ma2Arr = [];
  var ma3Arr = [];
  var tempLeftArr = [];
  var tempRightArr = [];
  for (i = 0; i < size; i++) {
    midArr.add((high[i] + low[i] + close[i]) / 3);
  }
  var refArr = REF(midArr, 1);
  for (i = 0; i < size; i++) {
    tempLeftArr.add(Tools.max(0.0, high[i] - refArr[i]));
    tempRightArr.add(Tools.max(0.0, refArr[i] - low[i]));
  }
  crLeftArr = SUM(tempLeftArr, p0);
  crRightArr = SUM(tempRightArr, p0);
  for (i = 0; i < size; i++) {
    if (i >= p0 - 1) {
      crArr.add((crLeftArr[i] / crRightArr[i]) * 100);
    } else {
      crArr.add(0);
    }
  }
  var a1 = MA(crArr, p1);
  var a2 = MA(crArr, p2);
  var a3 = MA(crArr, p3);

  ma1Arr = REF(a1, (p1 / 2.5 + 1).toInt());
  ma2Arr = REF(a2, (p2 / 2.5 + 1).toInt());
  ma3Arr = REF(a3, (p3 / 2.5 + 1).toInt());

  resultObj['CR'] = crArr;
  resultObj['MA1'] = ma1Arr;
  resultObj['MA2'] = ma2Arr;
  resultObj['MA3'] = ma3Arr;
  return resultObj;
}