3

cryptowatch.de (私の場合は LTC-EUR)の RSI 値を正確に反映したいので、RSI の計算方法を説明しているサイトstockcharts.comを使用して、計算機を Javascript (ノード) で記述しました。

これまでの私のコード:

// data is an array of open-prices in descending date order (the current price is the last element)
function calculateRSI(data) {
  data = data.reverse(); // Reverse to handle it better
  let avgGain = 0;
  let aveLoss = 0;

  // Calculate first 14 periods
  for (let i = 0; i < 14; i++) {
    const ch = data[i] - data[i + 1];

    if (ch >= 0) {
      avgGain += ch;
    } else {
      aveLoss -= ch;
    }
  }

  avgGain /= 14;
  aveLoss /= 14;

  // Smooth values 250 times
  for (let i = 14; i < 264; i++) {
    const ch = data[i] - data[i + 1];

    if (ch >= 0) {
      avgGain = (avgGain * 13 + ch) / 14;
      aveLoss = (aveLoss * 13) / 14;
    } else {
      avgGain = (avgGain * 13) / 14;
      aveLoss = (aveLoss * 13 - ch) / 14;
    }
  }

  // Calculate relative strength index
  const rs = avgGain / aveLoss;
  return 100 - 100 / (1 + rs);
}

しかし、結果は常に cryptowatch.deに表示される値とはかけ離れています。何が問題なのですか? それを正しく計算する方法は?(他のプログラミング言語での投稿もOK)

@jingxに感謝しますが、結果はまだ間違っています

4

4 に答える 4