如何寫排名增加前50名的語法

  •   827 
  • 最後發表   aRay  2023 三月 24
aRay 發文於   2022/04/19

請問XQ小編,我修改了千張大戶的腳本,改成400張,想要設定只選出較上周增加大於1%的前50名

並由大到小排序,這時候我可以加上什麼語法呢?

input: offset(9999,"不用調整,相容用參數");

input: ratio(1.5, "增加比例%");

var:sameweek(0);

 

setbarfreq("W");

settotalbar(3);

 

if getinfo("FilterMode") = 1 then  

sameweek = 0 

else if 

datediff(GetFielddate("收盤價","D"),GetFielddate("收盤價","W")) < 6 

then  sameweek = 1 else  sameweek = 0; 

 

value1=GetField("大戶持股比例","W",param:=400)[sameweek];

if value1 > (value1[1] * (1 + ratio/100)) then ret=1;

 

outputfield(1, Value1-Value1[1],  2, "差異%");

outputfield(2, value1, 2, "大戶比例");

outputfield(3, value1[1], 2, "上周大戶比例");

 

謝謝小編

另外,我想要再加上其它條件來優化選股,增加了關鍵券商,地緣券商及內部人持股比例

可是不知道哪邊寫錯了,編譯都沒有問題,但是跑出來都沒有符合…可以麻煩小編幫我看一下嗎?

謝謝小編

value1=GetField("關鍵券商買賣超張數","D");

value2=GetField("地緣券商買賣超張數","D");

if GetField("內部人持股比例","M")

>=GetField("內部人持股比例","M")[1]

and GetField("大戶持股比例","W",param := 400)

>=GetField("大戶持股比例","W",param := 400)[1]+0.5

and value1>=0

and value2>=0

then ret=1;

outputfield(1,GetField("內部人持股比例","M"),0,"內部人");

outputfield(2,GetField("內部人持股比例","M")[1],0,"前期內部人");

outputfield(3,value1,0,"關鍵券商");

outputfield(4,value2,0,"地緣券商");

outputfield(5,GetField("大戶持股比例","W",param := 400),1,"400張大戶比例");

outputfield(6,GetField("大戶持股比例","W",param := 400)[1],1,"前期400張大戶比例");

 

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

Hello aRay,

 

1.關於選股排序的作法,您可以參考此篇教學區文章: 如何創造個人排行榜

需要另外撰寫函數腳本才能夠排序。

寫法您可以參考內建的排行函數腳本當範例。

 

2.這是因為資料日期對位的關係,您可以使用 GetFieldDate 來檢驗該週的大戶持股比例是否更新,若該週還沒有資訊的狀況下,getfieldDate("大戶持股比例","W")取回來的值會是0。

附上小幫手修改的選股腳本供您作參考。

附加文件

aRay 發文於   2022/04/27

謝謝XQ小幫手!

Artemis 發文於   2023/03/16

不好意思,想要藉串詢問:

在函數裡面有多個變數,我要如何確定選股中心的排名是針對哪個變數來排序呢?

難道是最後一個獲得的變數嗎?

謝謝!

XQ小幫手 發文於   2023/03/20

Hello Artemis,

 

選股中心的排名是依據函數回傳的數值作排序。

您可以參考系統內建的函數,其中 retval 以及 和函數名相同的變數 就會是排序依據。

  • 按讚來自於
  • VJJU1017
Artemis 發文於   2023/03/22

找到了
所以函數名稱為中文的時候 用 retval去收回傳值

名稱是英文的時候就要用個同名變數最後去接收你要回傳的值

 

 

XQ小幫手 發文於   2023/03/24

Hello Artemis,

 

小幫手補充,函數腳本不論用中文還是英文命名,都可以用 retval 的方式將數值回傳。

發表回覆
Close