除權息語法求助小幫手

  •   146 
  • 最後發表   隔壁的老王  2023 八月 02
隔壁的老王 發文於   2023/07/10

請問小幫手:

var: controller(True);

 

settotalBar(1);

 

condition1 = date = GetField("除權息日期")[1] or date = GetField("除權息日期");  //判斷當日是否是除權息當日(有些商品會公布未來之資訊,所以同時比較前期值)

if condition1 then value1 = getfield("Close", "D")[1];  //紀錄除權息前一日的close

 

if controller and close > value1 and value1 <> 0 and volume > 1000 then begin

    ret = 1;

controller = False;

end;

 

以上語法為今日股價第一次大於除權息前一天的收盤價,但為什麼無法搜尋出7/10  3016的嘉晶呢?

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/07/14

 Hello 隔壁的老王,

 

小幫手推測您應該是使用選股策略,您可以使用 outputfield 將相關數值印出確認就可以知道原因。

由於腳本中設定了資料讀取筆數為1筆,所以除非當天剛好除權息,不然condition1 都會是False。

您的資料讀取筆數要設足夠 (至少有經過除權息當天),才能夠紀錄除權息前一天的價格。

舉例來說,若您settotalbar設為30筆的話就可以在 7/10 篩選出3016。

隔壁的老王 發文於   2023/07/15

我了解了,謝謝

隔壁的老王 發文於   2023/07/26

小幫手您好,我今天使用這個語法,把settotalbar設為500筆,但為什麼5386 青雲卻抓不到???

XQ小幫手 發文於   2023/08/02

Hello 隔壁的老王,

 

您腳本中的controller 會控制導致條件只能夠成立一次 (包含在資料讀取筆數的運算)。

當您設太長時,會導致條件在資料讀取筆數時就成立時改變 controller (ex. 前一次/去年的除權息日期),這樣就算運算當下就算其他條件符合,controller 也會是False。

舉例來說,如果資料讀取筆數設為30筆的話,在7/26就篩選的出5386。

發表回覆
Close