增加突破n日高欄位

  •   769 
  • 最後發表   東尼  2023 二月 03
東尼 發文於   2022/12/01

請問工程師:篩選後資料表格上

 

1. 請問在選股的功能 想增加一個選項  "增加突破n日高"功能  當寫好指令碼後  選股程式將會跑出結果  但結果資料上不會看到有突破幾日高的欄位    如果想在篩選後資料上顯示出   "突破n日高"的欄位  請問該如何處理?

圖1. 例中是顯示20日高且量增個股 若設定找突破>=20日高點且量增1.5倍之個股   想在篩選後資料上(左邊紅框處)

  或是選股規則中有突破幾日高的選項   想把    "突破n日高" 的欄位 顯示在執行選股後資料上   圖1  ˊ執行選股後資料

2.選股規則功能中有"機構評等的目標價位"欄位嗎  想用篩選後的顯示資料欄位上  圖2 機構評等 目標價位

3.請問當我執行完選股功能資料出來後  假設跑出來15筆個股  想依照"月乖離 由小到大"排序 該如何設定?

謝謝您

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/12/01

Hello 東尼,

 

1. 您可以使用 outputfield 函數來讓想要的數值顯示在選股中心裡。

 

2. 就小幫手所知沒有。

您可以在 XSHelp 上查詢是否有想用的欄位。

 

3. 您可以在腳本中計算月乖離,接著使用 outputfield 將其輸出後,就可以點選股中心的該欄位即可排序。

另外也可以參考 如何創造個人排行榜

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

東尼 發文於   2022/12/01

 

謝謝工程師回覆

想要的欄位如下圖橘色框所表示  收盤價創N日高

筆者的問題 是想請教您   如何將  "收盤價創N日高" 用程式碼表示? 

可否請您指導!

謝謝您的回覆 感恩

 

XQ小幫手 發文於   2022/12/02

Hello 東尼,

 

如果您是要問怎麼寫 收盤價創N日高 的話,可以用 highest 來找出近n日的最高點並確認是否為 close。

若您要找的是 n 這個值的話,可以用迴圈來找。

舉例來說:

value1 = 0;

value2 = GetFieldStartOffset("close");

while close >= simpleHighest(high, value1 + 1) and value1 <= value2 begin

    value1 += 1;

    end;

 

ret = 1;

outputField1(value1, "創n期新高");

這樣 value1 就會是創新高的期數。

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

東尼 發文於   2022/12/02

謝謝您的回覆 感恩~

東尼 發文於   2023/01/16

請問工程師:

上文是問收盤價創N日高 

1.若要改成跌破n日低呢?

2.可以一起顯示  創N日高跌 或 跌破n日低嗎?

謝謝您

 

XQ小幫手 發文於   2023/01/18

Hello 東尼,

 

1.就是相同邏輯但方向相反而已.

 

2.當然可以,只是要分開計算而已。

 

簡單舉例:

settotalbar(1);

value1 = 0;

value2 = 0;

value3 = GetFieldStartOffset("close");

 

while (close >= simpleHighest(high, value1 + 1) and value1 <= value3) or (close <= simplelowest(low, value2 + 1) and value2 <= value3) begin

    if close >= simpleHighest(high, value1 + 1) then value1 += 1;

    if close <= simplelowest(low, value2 + 1) then value2 += 1;

    end;

 

ret = 1;

 

outputField1(value1, "創n期新高");

outputField1(value2, "創n期新低");

 

小幫手建議您可以先看看教學區,裡面有XS語法的基礎和應用。

東尼 發文於   2023/01/19

好的 感謝工程師  祝您新年快樂

請問已附圖1101而言  

創n期新高   是 0

創n期新低  是 0 

謝謝

 

東尼 發文於   2023/01/19

 請問工程師這個選股指令碼  怎麼改成創n期低  邏輯上轉不過來謝謝您

XQ小幫手 發文於   2023/01/19

Hello 東尼,

 

顯示0代表收盤價沒有創新高或新低。

如果您不希望顯示0的話,那麼可以將

ret = 1;

改為

if value1 <> 0 or value2 <> 0 then ret = 1;

這樣就只會顯示有創新高或創新低的商品。

 

另外,您的附圖偏小,小幫手看不太清楚。

建議您可以直接將腳本貼上來會比較好。

小幫手上面提供的腳本就已經有創N期新低的邏輯。

這邊節錄該部分供您參考:

value2 = 0;    //紀錄創新低期數 (從0開始)

value3 = GetFieldStartOffset("close");

 

while  (close <= simplelowest(low, value2 + 1) and value2 <= value3) begin   //如果收盤價小於等於近N+1期

    value2 += 1;  //N增加1

    end;

 

東尼 發文於   2023/01/20

本例是創高天數 

請問怎麼改成創低天數  謝謝您

--------------------------------------------------------------

input: min_period(2, "最低期別");

 

value1 = GetFieldStartOffset("close", "D");

 

value2 = GetField("close", "D");// 最新一日收盤價

 

var: idx(0);

idx = 1;

 

while idx <= value1 begin

    if GetField("close", "D")[idx] < value2 then

        idx = idx + 1

    else

        break;

end;     

if idx >= min_period then begin ret=1;

 

end;

  

顯示更多回應 發表回覆
Close