株価チャート表示 サンプルプログラム

stcastics.js


ストキャスティックスを描画します。

var COL_D = "#0000ff";      //%Dの色
var COL_SLOWD = "#ff4040";  //スロー%Dの色
var DAYS_PK = 5;            //%Kの日数
var DAYS_PD = 3;            //%Dの日数
var DAYS_SLOWPD = 3;        //SLOW%Dの日数

//ストキャスティックス表示
function dspStcastics(){
    var i;
    var j;
    var minVal;
    var maxVal;
    var pk = new Array(gEd.length);
    var pd = new Array(gEd.length);
    var slowpd = new Array(gEd.length);

    getCanvas("idstcas");

    var stcasHeight = document.getElementById("idstcas").height;
    var yRate = stcasHeight / 100;

    //%Kの計算(5日間の変動幅)
    w = 0;
    for (i = DAYS_PK - 1; i <= gEndIdx; i++) {
        //5日間の最安値と最高値を求める
        minVal = gEd[i - 4];
        maxVal = gEd[i - 4];
        for (j = i - 4 + 1; j <= i; j++) {
            if (gEd[j] < minVal) {
                minVal = gEd[j];
            } else if (maxVal < gEd[j]) {
                maxVal = gEd[j];
            }
        }
        pk[i] = (gEd[i] - minVal) / (maxVal - minVal) * 100;
    }

    //%Dの計算(%Kの3日間の平均)
    for (i = 6; i <= gEndIdx; i++) {
        pd[i] = (pk[i - 2] + pk[i - 1] + pk[i]) / DAYS_PD;
    }

    //SLOW%Dの計算(%Dの3日間の平均)
    for (i = 8; i <= gEndIdx; i++) {
        slowpd[i] = (pd[i - 2] + pd[i - 1] + pd[i]) / DAYS_SLOWPD;
    }

    //%D描画
    gCtx.beginPath();
    gCtx.strokeStyle = COL_D;
    stIdx = getDrawIdx(gStartIdx, 9);
    gCtx.moveTo(gX, stcasHeight - pd[stIdx] * yRate);
    for (i = stIdx + 1; i <= gEndIdx; i++) {
        gX += CNDL;
        gCtx.lineTo(gX, stcasHeight - pd[i] * yRate);
    }
    gCtx.stroke();
    gCtx.closePath();

    //SLOW%D描画
    gCtx.beginPath();
    gCtx.strokeStyle = COL_SLOWD;
    stIdx = getDrawIdx(gStartIdx, 9);
    gCtx.moveTo(gX, stcasHeight - slowpd[stIdx] * yRate);
    for (i = stIdx + 1; i <= gEndIdx; i++) {
        gX += CNDL;
        gCtx.lineTo(gX, stcasHeight - slowpd[i] * yRate);
    }
    gCtx.stroke();
    gCtx.closePath();

    document.getElementById("vstcas1").text = "80%";
    document.getElementById("vstcas2").text = "50%";
    document.getElementById("vstcas3").text = "20%";
}



管理人は、本サンプルプログラムを用いて行う判断の一切について責任を負うのもではありません。 ct7m-fnk@asahi-net.or.jp