你好, 請教一下, 下列是我XS的程式,

為何我算出來的KD值和圖表的KD值有差異,

以附檔為例, 1/20差異還不算大,

但去執行1/13的就差異很大了。

 

感謝

 

以下是我的程式碼

//========== 宣告變數 ==========//   
//  Str_代表文字   var:Str_1("A"),    Str_2("B")      //   
//  Num_代表數字   var:Num_01(1),     Num_02(2)       //   
//  Flag_代表布林  var:Flag_B1(True), Flag_B2(True)   //   
//  I_代表輸入的值                                    //   
//  O_代表函數回傳的值                                //   
//=============================//   
//輸入預設值
    input:INum_PriceC(8);    
    setinputname(1,"日收盤價");
   
    input:INum_VolumeP(500);    
    setinputname(2,"前日成交量");
   
    input:INum_PriceCR(2);    
    setinputname(3,"收盤價的漲跌幅");
   
    input:INum_D_W(50);    
    setinputname(4,"9周D值");
   
    input:INum_Rsv_D(9);
    setinputname(5,"日KD期間");
   
    input:INum_Rsv_W(9);
    setinputname(6,"周KD期間");
//變數宣告
    Var:Num_Rsv_D(0),Num_K_D(0),Num_D_D(0);
    Var:Num_Rsv_W(0),Num_K_W(0),Num_D_W(0);
    Var:Num_PriceH(0);     //最高價
    Var:Num_PriceO(0);     //開盤價
    Var:Num_PriceC(0);     //收盤價
    Var:Num_PriceL(0);     //最低價
    Var:Num_Volume(0);     //成交量
    Var:Num_PriceCR(0);    //漲跌幅Change Range
    Var:Num_PriceDif(0);   //漲跌
   
   
//========== 欄位值計算或取得 ==========//   
    value1 = GetField("日期","D");
    value2 = GetField("股本(億)","D");
   
    //收盤價
    Num_PriceH  = GetField("最高價","D");
    Num_PriceO  = GetField("開盤價","D");
    Num_PriceC  = GetField("收盤價","D");
    Num_PriceL  = GetField("最低價","D");
    Num_Volume  = GetField("成交量","D");
    Num_PriceCR = GetField("漲跌幅","D");

    // 計算日、周Rsv、K、D值
    stochastic(INum_Rsv_D, 3, 3, Num_Rsv_D, Num_K_D, Num_D_D);
    xf_stochastic("W", INum_Rsv_W, 3, 3, Num_Rsv_W, Num_K_W, Num_D_W);
    Num_PriceDif = Num_PriceC[1] - Num_PriceC;

//========== 條件判斷 ==========//   
    //條件一:日收盤價>8
    condition1 = Num_PriceC > INum_PriceC;
   
    //條件二:1日前的日成交量>=500
    condition2 = Num_Volume[1] >= INum_VolumeP;
   
    //條件三:1日內日收盤價的漲跌幅>2
    condition3 = Num_PriceCR > INum_PriceCR;
   
    //條件四:日收盤價>日開盤價
    condition4 = Num_PriceC > Num_PriceO;
   
    //條件五:9周D值<50
    condition5 = Num_D_W < INum_D_W;
   
   
//========== 篩選條件 ==========
    if
        condition1
    and condition2
    and condition3
    and condition4
    and condition5
    //and condition6
    //and condition7
    then ret=1;        

//========== 資料產出 ==========//   
    //outputfield(1, value1,"日期");
    outputfield(2, date,"資料日期");
    outputfield(3,Num_PriceH,"最高價");
    outputfield(4,Num_PriceO,"開盤價");
    outputfield(5,Num_PriceC,"收盤價");
    outputfield(6,Num_PriceL,"最低價");
    outputfield(7,Num_Volume,"成交量");
    outputfield(8,Num_PriceCR,"漲跌幅");
    outputfield(9,Num_PriceDif,"漲跌");
    outputfield(10,Num_PriceH[1],"前日收盤價");
    outputfield(11,Num_Rsv_W,"周Rsv");
    outputfield(12,Num_K_W,"周K");
    outputfield(13,Num_D_W,"周D");
    outputfield(14,Num_Rsv_D,"日Rsv");
    outputfield(15,Num_K_D,"日K");
    outputfield(16,Num_D_D,"日D");