小幫手您好

  •   103 
  • 最後發表   小陽  2024 四月 03
小陽 發文於   2024/03/24

我想在的選股結果欄位增加一欄:

 

假設今天3/18 收盤價100$、3/17 收盤價97、3/16收盤價98、3/15收盤價96、3/14收盤價101

以今天(3/18)收盤價為基準(100$),今天(3/18、100$)的收盤價比前一天收盤價(3/17、97$)高,則計1。

今天(3/18、100$)收盤價比前兩天(3/16、97$)高,則計2。

今天(3/18、100$)收盤價比前三天低,則計2,並停止計算。

像是一些創十年的老股票就要計2400,請問這該怎麼寫?感恩。

var:x(1);

if close > close[x] then begin

  x+=1;

  end;

以上第一輪x=1,close>close[1],為true則繼續close>close[2],直到close<=close[x]停下,我這樣的思緒是正確的嗎?

 

 

XQ小幫手 發文於   2024/04/03

Hello, 小陽.

小幫手建議您先了解一下腳本執行程序,

系統預設的資料是10筆,程式會從第一筆開始跑,所以您的寫法會變成,從11天前開始計算,只要符合close > close[x],x都會累加,

 

所以小幫手改用while來計算創高天數,將程式修改如下:

SetTotalBar(1);//確保程式只跑一次

var:x(0);

While 
    close > close[x + 1]
begin
    x += 1;
    if 
        x >= GetFieldStartOffset("Close") // 上市櫃以來新高,就必須中斷迴圈
    then 
        break;
end;

ret = 1;

outputField1(x, "創N日新高");
outputField2(GetFieldStartOffset("Close"), "上市櫃以來資料長度");

1712135986900

謝謝。

發表回覆
Close