找出20日均線連續20日上揚的個股

  •   351 
  • 最後發表   BEN0341  2024 八月 16
BEN0341 發文於   2024/08/13

想找出20日均線連續20日上揚的個股,在2024-08-13 14:00時執行,沒有出現"太普高(3284)",所以腳本是有錯的,但想不出錯在哪裡,請前輩指點迷津

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

Variable: SumValue(0);
Variable: i(0);

For i = 0 to 3
Begin
    if average(close,20)[i] >= average(close,20)[i+1]
        then SumValue = SumValue + 1;
End;

if SumValue = 20
    then ret = 1;

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

符合條件商品
資料日期:2024年  8月 12日
策略,    test均線上揚(1)
"序號","代碼","商品","成交","漲幅%",總量
1    ,"2035.TW","唐榮","31.9","-0.31",9
2    ,"2615.TW","萬海","82.5","6.87",45585
3    ,"3045.TW","台灣大","107.5","0",6543
4    ,"4174.TW","浩鼎","73.9","-1.2",4226
5    ,"4530.TW","宏易","8.15","-1.21",15
6    ,"5283.TW","禾聯碩","104.5","-0.48",95
7    ,"5386.TW","青雲","75","-2.47",1434
8    ,"6122.TW","擎邦","60.8","1.67",1350
9    ,"6651.TW","全宇昕","80.6","4.13",557

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/08/13

你的需求一行陳述式就好了。

if TrueAll(average(c, 20)>average(c[1], 20), 20) then ret=1;

BEN0341 發文於   2024/08/13

感謝許教授,但TrueAll的第二個參數改成10(10天)可以找到70多檔個股,改成11(11天)的話會找不到任何個股,但其實是有的,像太普高(3284) 2024-08-13 就是,這是為什麼呢?

虎科大許教授 發文於   2024/08/13

setTotalBar(11); 就就找得到。選股預設只準備10筆資料。

XS小編 發文於   2024/08/16

Hello BEN0341,

 

小編補充,不建議用 函數[1] (ex. average(close, 20)[1]) 的方式來計算前期值。

就average 函數來說 average(close[1], 20) 會比較適合。

 

另外您的腳本中每次只檢查近4期的資料,且沒有重置sumvalue,出來的數值會是有問題的 (包含大量的重複期數)。

除了 虎科大許教授 的建議外,正確的迴圈寫法應該是:

Variable: SumValue(0);

 

SumValue = 0;

for value1 = 0 to 19 begin

    if average(close[value1], 20) >= average(close[value1 + 1], 20) then SumValue+=1;

    end;

 

if SumValue = 20 then ret = 1;

 

這樣的話即使資料讀取筆數只有1筆也可以運作 (因為沒有使用到變數前期值)。

 

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

發表回覆
Close