找出當天財報更新的數值

  •   205 
  • 最後發表   ED1  2023 十一月 30
ED1 發文於   2023/11/14

SetBarFreq("d"); //僅限日頻率

input:days(1,"幾日內更新");

var:i(0);

settotalBar(days+1);

 

value1 = GetFieldDate("營業毛利率","q");

if value1 = 0 then return; //過濾沒資料或資料尚未轉檔完畢

 

for i = days downTo 1

begin

if value1<>value1[i] then begin

ret = 1;

value2 = i-1;

value3 = GetField("Date","D")[i-1];

 

end;

end;

 

value4 = GetField("營業毛利率","q");

if value4 = 0 then return; //過濾沒資料或資料尚未轉檔完畢

if value4<>value4[i] then begin

ret = 1;

value5=value4-value4[i]

end;

 

 

 

outputField1(value2,"幾日前更新");

outputField2(value3,"毛利率更新日");

outputField3(month(value1),"毛利率期別");

outputField4(value4,"營業毛利率");

outputField5(value5,"營業毛利率季增率");

 

到value4之前都可以編譯,想請問這中間還少了什麼?

另外想請問(營業毛利的"年"增率)該如何寫入 謝謝

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

Hello, ED1.

 

小幫手將您的腳本修改如下,

SetBarFreq("d"); //僅限日頻率
input:days(1,"幾日內更新");
var:i(0);
settotalBar(days+1);


value1 = GetFieldDate("營業毛利率","q");
if value1 = 0 then return; //過濾沒資料或資料尚未轉檔完畢


for 
    i = days downTo 1
begin
    if 
        value1 <> value1[i] 
    then begin
        ret = 1;
        value2 = i - 1;
        value3 = GetField("Date","D")[i - 1];
    end;
end;

value4 = GetField("營業毛利率","q");
value5 = GetField("營業毛利率","q")[1];
value6 = GetField("營業毛利率","q")[4];

outputField1(value2,"幾日前更新");
outputField2(value3,"毛利率更新日");
outputField3(month(value1),"毛利率期別");
outputField4(value4,"營業毛利率");
outputField5(value5,"前一季營業毛利率");
outputField6(value4 - value5,"營業毛利率季增率");
outputField7(value6,"前一年同一季營業毛利率");
outputField8(value4 - value6,"營業毛利率年增");

有幾個修改點,首先value1 = GetFieldDate("營業毛利率","q");這邊已經判斷過資料更新日期所以後續不需多做判斷,

我們知道一年有四季,所以季增就是與前一季的比較,年增就是與前面第四個季度的比較,

所以季增:GetField("營業毛利率","q") - GetField("營業毛利率","q")[1];

年增:GetField("營業毛利率","q") - GetField("營業毛利率","q")[4];

這邊使用下列方式的原因主要是因為GetField("營業毛利率","q")是季頻率,而您選股主頻率是使用日頻率,

 

所以 value4[1]與value4[4],會歪掉跑到前一天與前四天的結果,而不是前一季與前四季的資料,

value4 = GetField("營業毛利率","q");
value5 = GetField("營業毛利率","q")[1];
value6 = GetField("營業毛利率","q")[4];

謝謝。

ED1 發文於   2023/11/30

了解 非常感謝 放便請問如果把營業毛利率改成EPS後,想要計算當年度的"累計EPS 該怎麼算呢?

 

value4 = GetField("EPS","q");

value5 = GetField("EPS","q")[1];

value6 = GetField("EPS","q")[2];

value7 = GetField("EPS","q")[3];

value8 = GetField("EPS","q")[4];

outputField1((value5+value6+value7+value8,"累計EPS");

 

這樣寫的話會算到前一年的第四季, 有什麼語法是可以限制在今年呢? 謝謝

發表回覆
Close