親愛的小編 &各位高手,
我在計算近三日法人買超時,使用了value2 = summation(getfield("法人買賣超張數","D"),3) ,請問這樣的語法有誤嗎? 因為計算出來的近三日數值,有對有錯。我用outputfield列釋出三天的數值,卻又正確無誤。不知道究竟出錯在哪? 請各位協助,謝謝!!
我另外用系統的選股條件去排列,卻就會跑出正確的結果。
我將summation去掉,改成逐日相加,結果竟然還是一樣。每天的資料都正確,但加總起來卻出錯了。
// 技術面、財務面、籌碼面綜合選股
input: shortMA(20,"短均線"),midMA(60,"中均線"),longMA(240,"長均線");
input: opr(5,"營業利益率基準"),pe(20,"本益比基準"),overbuy(1000,"法人買超基準");
var: epsf(0);
if average(close,shortMA)> average(close,midMA) and average(close,midMA) > average(close,longMA) and close>average(close,midMA) then Begin
if Getfield("營業收入淨額","Q")> Getfield("營業收入淨額","Q")[1] then
if Getfield("營業利益率","Q")>=opr then begin
epsf = GetField("EPS","Q")*4;
value1 = close/epsf;
value2 = getfield("法人買賣超張數","D")+ getfield("法人買賣超張數","D")[1]+ getfield("法人買賣超張數","D")[2];
end;
if value1<pe and value2 > overbuy then ret =1;
outputField1(Getfield("營業利益率","Q"),"營業利益率%");
outputField2(value1,"PE");
outputField3(value2,"法人三天買超張數");
outputField4(getfield("法人買賣超張數","D"),"法人買超");
outputField5(getfield("法人買賣超張數","D")[1],"法人買超[1]");
outputField6(getfield("法人買賣超張數","D")[2],"法人買超[2]");
end;
跑出來的結果卻如附圖
還請幫忙更正,謝謝!
小陳
問題出在outputfield抓的法人買超、法人買超[1]、法人買超[2]的數值是最近三天的數值,而法人三天買超張數數值是符合條件往前總共三天的數值。以1603華電為例,20240712符合條件,0712的法人買超1154,0711法人買超35張,0710法人買超125,合計就是outputfield3的合計數值1314張。至於outputfield4,outputfield5,outputfield6,則是這三天,亦即0729、0726、0725,的數值。
哦! 感謝許教授解釋,了解您的意思。但這樣不就變成GedField資料日期無法控制了嗎? 或者我該如何修正? 謝謝!
input: shortMA(20,"短均線"),midMA(60,"中均線"),longMA(240,"長均線");
input: opr(5,"營業利益率基準"),pe(20,"本益比基準"),overbuy(1000,"法人買超基準");
var: epsf(0);
if average(close,shortMA)> average(close,midMA) and average(close,midMA) > average(close,longMA) and close>average(close,midMA) then
Begin
if Getfield("營業收入淨額","Q")> Getfield("營業收入淨額","Q")[1] then
if Getfield("營業利益率","Q")>=opr then
begin
epsf = GetField("EPS","Q")*4;
value1 = close/epsf;
value2 = summation(getfield("法人買賣超張數","D"),3);
value3 = getbarOffset(date);
end;
if isLastBar and value1 < pe and value2 > overbuy then
begin
ret =1;
outputField1(value2,"法人三天買超張數");
outputField2(getfield("法人買賣超張數","D")[value3],"法人買超");
outputField3(getfield("法人買賣超張數","D")[value3+1],"法人買超[1]");
outputField4(getfield("法人買賣超張數","D")[value3+2],"法人買超[2]");
end;
end;
感謝許教授的協助,謝謝!
我今天晚上執行的結果只有選出4檔股票,你卻選出13檔。請將選股中心原本的策略刪除,重新加入我寫的選股策略看看。
你改寫程式之後又犯了相同的錯誤。請仔細閱讀我前面的程式碼,了解程式背後是怎麼運作的,問題即可解決。
11 評論