欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 計算kdj

趙鴻安1年前7瀏覽0評論

介紹一下JavaScript中的KDJ指標計算方法。KDJ指標是一種根據股票收盤價計算出來的技術指標,它分別是隨機指標KDJ,其中K值為最近若干個周期內最高價-收盤價的最大值,D值為K的m日簡單移動平均,J值為3D-2K。

實現KDJ指標計算的方法如下:

function KDJHelper(m, closePrices) {
var length = closePrices.length;
var rsvs = calculateRSVs(m, closePrices);
var ks = calculateKValues(m, rsvs);
var ds = calculateDValues(m, ks);
var js = calculateJValues(ks, ds);
return {ks: ks, ds: ds, js: js};
}
function calculateRSVs(m, closePrices) {
var rsvs = [];
for (var i = 0; i < closePrices.length; i++) {
var rangeStart = Math.max(0, i - m + 1);
var minPrice = Math.min.apply(null, closePrices.slice(rangeStart, i + 1));
var maxPrice = Math.max.apply(null, closePrices.slice(rangeStart, i + 1));
var rsv = (closePrices[i] - minPrice) / (maxPrice - minPrice) * 100;
rsvs.push(rsv);
}
return rsvs;
}
function calculateKValues(m, rsvs) {
var ks = [];
var smas = [50];
for (var i = 1; i < rsvs.length; i++) {
var sma = smas[i - 1] + (rsvs[i] - rsvs[Math.max(0, i - m)]) / m;
smas.push(sma);
ks.push(sma);
}
return ks;
}
function calculateDValues(m, ks) {
var ds = [];
var smas = [50];
for (var i = 1; i < ks.length; i++) {
var sma = smas[i - 1] + (ks[i] - ks[Math.max(0, i - m)]) / m;
smas.push(sma);
ds.push(sma);
}
return ds;
}
function calculateJValues(ks, ds) {
var js = [];
for (var i = 0; i < ks.length; i++) {
var j = 3 * ds[i] - 2 * ks[i];
js.push(j);
}
return js;
}

為了計算KDJ指標,需要先計算RSV值。根據公式,RSV等于收盤價在最近的m個收盤價中所處的位置的百分比。例如,假設m為9,則第10天的RSV等于該日的收盤價減去前9天內最低收盤價的差除以前9天內最高收盤價與最低收盤價的差再乘以100。

然后計算K值。K等于RSV的m日EMA。第一天的K值等于50(這是EMA算法的一個特例),所有后續的K值用下式計算:

K = EMA(m, RSV, previousK)

其中,EMA是指數移動平均,上一日的K值作為前一天計算EMA的起點。每天計算完K值后,就能計算出D值,D等于K的m日EMA:

D = EMA(m, K, previousD)

最后計算J值。J等于3D減去2K:

J = 3 * D - 2 * K

下面是一個例子:

var m = 14;
var closePrices = [62.15, 63.12, 62.16, 60.16, 60.29, 61.04, 63.13, 63.23, 63.16, 63.16,
63.3, 64.24, 62.59, 63.52, 63.06, 62.78, 61.28, 60.7, 61.11, 61.72];
var kdj = KDJHelper(m, closePrices);
console.log(kdj);
// 輸出:
// {ks: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50.56, 54.47,
//       54.23, 55.01, 56.26, 56.20, 50.92, 46.32, 44.70, 46.87],
//  ds: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50.56, 52.73,
//       53.07, 53.91, 54.89, 55.46, 53.35, 49.40, 46.86, 46.90],
//  js: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50.56, 57.40,
//       51.41, 60.39, 66.54, 62.96, 48.72, 32.87, 22.19, 24.95]}

這個例子中,我們使用14日的周期來計算KDJ指標。輸入的收盤價序列長度為20。第一天的K值為50,因為我們定義當天的EMA等于50,這與EMA算法的一個特例有關。

從第二天開始,每天都按照上述公式計算K值、D值和J值。由于使用的是EMA,所以前一天的K值和D值會影響后一天的計算結果,這意味著KDJ值與輸入序列的長度有關。通常,可以使用30日、60日或90日等周期,這些值的選取取決于期望的交易周期。

以上是JavaScript中計算KDJ指標的方法,目的是用來分析股票市場行情,輔助交易決策。如果您對股票有興趣,可以嘗試下載一些股票交易數據,用這個計算方法來分析出一些有用的信息。如果您有其他關于KDJ指標或技術指標計算的問題,可以在JavaScipt開發者社區中尋找答案。