以函數讀取外資持股百分比多日變化並轉化成字串

  •   307 
  • 最後發表   蔣大哥  2024 十一月 26
蔣大哥 發文於   2024/11/16

我的CODING 如下 請教何處有 BUG 造成輸出字串變成無限次重複

 

 

//=========    連續N天 外資持股百分比 之變化  =========   2024/11/16

//========= 輸入天數  以字串 輸出外資持股百分比 之變化 ( 函數名稱 FrgnShrHold   )

 

input:    Period(numericsimple,"追蹤天數");

 

Var : frgnhold(0), ix(0);

Var : fstr("");

For ix = 1  to Period 

  begin

     frgnhold = GetField("外資持股比例","D")[ix-1]  ;

     fstr +=  text(NumtoStr(frgnhold,1)," / ");

  end; 

FrgnShrHold =    fstr ;

//-----------------------------------------------------------------------------     

//  CALLER CODES

 //=========    連續N天 外資持股百分比 之變化  =========   2024/11/16

//========= 輸入天數  以字串 輸出外資持股百分比 之變化 ( 函數)

 

input: 

    Period(numericsimple,"追蹤天數");

 

Var : frgnhold(0), ix(0);

Var : fstr("");

 

For ix = 1  to Period 

  begin

     frgnhold = GetField("外資持股比例","D")[ix-1]  ;

     fstr +=  text(NumtoStr(frgnhold,1)," / ");

  end;

  

FrgnShrHold =    fstr ;

//-----------------------------------------------------------------------------

排序方式: 標準 | 最新
蔣大哥 發文於   2024/11/16

//============== ForeignSharesHolding%  ======== 2024/11/16

 

setbarfreq("D");

 

Var : Strfrgnhold(" ");

 

Strfrgnhold = FrgnShrHold(5);

 

 

 

 

if Symbol = "2330.TW"

THEN RET = 1;

 

outputField(1, Strfrgnhold,0,"外資持股百分比 之變化");

 

虎科大許教授 發文於   2024/11/17

setbarfreq("D");
Var : Strfrgnhold(" ");
if isLastBar then
    if Symbol = "2330.TW" THEN
        begin
            Strfrgnhold = FrgnShrHold(5);
            RET = 1;
            outputField(1, Strfrgnhold,0,"外資持股百分比 之變化");
        end;

蔣大哥 發文於   2024/11/19

感謝許教授的指點  將

Ret = 1  至於  if Symbol = "2330.TW"  THEN 

之條件下  即可送出正確字串

唯一尚有不解疑惑   If isLastBar then 的 實際功能為何?

 

在甚麼情況下   If isLastBar  會送回 false 的信號 ?

 

謝謝

虎科大許教授 發文於   2024/11/19

程式跑到最後一根K棒時isLastBar會等於True。

XS小編 發文於   2024/11/26

Hello 蔣大哥,

 

小編補充,會重複印出是因為腳本在資料讀取筆數時也符合條件,故 fstr 會持續累加上去。

您也可以在函數中執行迴圈前將 fstr 設為空字串來避開此問題。

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close