程式run的結果,不能滿足設定條件

  •   160 
  • 最後發表   好朋友  2018 四月 24
好朋友 發文於   2018/04/22

您好,

 

請參見我的程式碼, run的結果不能滿足設定條件, 例如當季的應收帳款周轉率,存貨周轉率, 營業現金流量/營業利益,需大於上季,請問問題出在哪裡? 謝謝!

本要用上傳檔案,但因為 .xsb .docs .txt 皆不能接受,請問到底附檔名要用什麼格式,才能上傳 ? 原始碼如下;

SetTotalBar(13);
setbarfreq("Q");


If GetField("應收帳款週轉率(次)","Q")>GetField("應收帳款週轉率(次)","Q")[4] and //每季應收帳款週轉率都進步,且今年比去年好
 GetField("應收帳款週轉率(次)","Q")[1]>GetField("應收帳款週轉率(次)","Q")[5] and
 GetField("應收帳款週轉率(次)","Q")[2]>GetField("應收帳款週轉率(次)","Q")[6] and
 GetField("應收帳款週轉率(次)","Q")[3]>GetField("應收帳款週轉率(次)","Q")[7] and
 GetField("應收帳款週轉率(次)","Q")>GetField("應收帳款週轉率(次)","Q")[1] and
 GetField("應收帳款週轉率(次)","Q")[1]>GetField("應收帳款週轉率(次)","Q")[2] and
 GetField("應收帳款週轉率(次)","Q")[2]>GetField("應收帳款週轉率(次)","Q")[3]
then
 condition1 = true;
 
If GetField("存貨週轉率(次)","Q")>GetField("存貨週轉率(次)","Q")[4] and //每季存貨週轉率都進步,且今年比去年好
 GetField("存貨週轉率(次)","Q")[1]>GetField("存貨週轉率(次)","Q")[5] and
 GetField("存貨週轉率(次)","Q")[2]>GetField("存貨週轉率(次)","Q")[6] and
 GetField("存貨週轉率(次)","Q")[3]>GetField("存貨週轉率(次)","Q")[7] and
 GetField("存貨週轉率(次)","Q")>GetField("存貨週轉率(次)","Q")[1] and
 GetField("存貨週轉率(次)","Q")[1]>GetField("存貨週轉率(次)","Q")[2] and
 GetField("存貨週轉率(次)","Q")[2]>GetField("存貨週轉率(次)","Q")[3]
then
 condition2 = true; 
 
//最近5季正現金流量
if GetField("營業現金流量/營業利益")[5] >0 and GetField("營業現金流量/營業利益")[4] >0 and
 GetField("營業現金流量/營業利益")[3] >0 and GetField("營業現金流量/營業利益")[2] >0 and
 GetField("營業現金流量/營業利益")[1] >0 and GetField("營業現金流量/營業利益")[0] >0
then condition3 = true ;

If condition1 and condition2 and condition3
then ret=1;

 
outputfield1(GetField("應收帳款週轉率(次)","Q")[7],"7應收周轉");
outputfield2(GetField("應收帳款週轉率(次)","Q")[6],"6應收周轉"); 
outputfield3(GetField("應收帳款週轉率(次)","Q")[5],"5應收周轉");
outputfield4(GetField("應收帳款週轉率(次)","Q")[4],"4應收周轉"); 
outputfield5(GetField("應收帳款週轉率(次)","Q")[3],"3應收周轉");
outputfield6(GetField("應收帳款週轉率(次)","Q")[2],"2應收周轉"); 
outputfield7(GetField("應收帳款週轉率(次)","Q")[1],"1應收周轉");
outputfield8(GetField("應收帳款週轉率(次)","Q")[0],"0應收周轉");

outputfield31(GetField("存貨週轉率(次)","Q")[7],"7存貨周轉");
outputfield32(GetField("存貨週轉率(次)","Q")[6],"6存貨周轉");
outputfield33(GetField("存貨週轉率(次)","Q")[5],"5存貨周轉");
outputfield34(GetField("存貨週轉率(次)","Q")[4],"4存貨周轉");
outputfield35(GetField("存貨週轉率(次)","Q")[3],"3存貨周轉");
outputfield36(GetField("存貨週轉率(次)","Q")[2],"2存貨周轉");
outputfield37(GetField("存貨週轉率(次)","Q")[1],"1存貨周轉");
outputfield38(GetField("存貨週轉率(次)","Q")[0],"0存貨周轉");

outputfield51(GetField("營業現金流量/營業利益")[5],"5現金流量");
outputfield52(GetField("營業現金流量/營業利益")[4],"4現金流量");
outputfield53(GetField("營業現金流量/營業利益")[3],"3現金流量");
outputfield54(GetField("營業現金流量/營業利益")[2],"2現金流量");
outputfield55(GetField("營業現金流量/營業利益")[1],"1現金流量");
outputfield56(GetField("營業現金流量/營業利益")[0],"0現金流量");

 

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

Hi 好朋友,

您好,待小幫手查看後,再向您說明,謝謝

檔案上傳的部分,若無法附檔上傳,請將附檔寄至客服信箱: XQservice@XQ.com.tw  

並註明是 XS使用問題討論區的問題,以利相關人員查看,謝謝。

 

XQ小幫手 發文於   2018/04/23

Hi 好朋友,

小幫手方才跑您的程式碼,是可以執行選股策略成功篩選出股票的,如下圖

故請您在試試看,若仍有問題,請您將選股策略匯出檔(.DSTX) Mail 至客服信箱: XQservice@XQ.com.tw ,

並附上此討論串連結,以利小幫手查看問題的原因,謝謝。

 

好朋友 發文於   2018/04/23

您好,

我很仔細看了你的附檔圖片,結果和我跑的結果一樣,不是不能跑出來,而是結果有問題, 請仔細看我設定的條件之一是

GetField("應收帳款週轉率(次)","Q")>GetField("應收帳款週轉率(次)","Q")[1] ,可是跑出來的結果卻不一致,如以1258其祥為例,其結果卻是包含"0應收周轉"3.22 < "1應收周轉"3.57,還有很多地方有類似的問題.

 

 

您好,

 

請參見我的程式碼, run的結果不能滿足設定條件, 例如當季的應收帳款周轉率,存貨周轉率, 營業現金流量/營業利益,需大於上季,請問問題出在哪裡? 謝謝!

本要用上傳檔案,但因為 .xsb .docs .txt 皆不能接受,請問到底附檔名要用什麼格式,才能上傳 ? 原始碼如下;

SetTotalBar(13);
setbarfreq("Q");


If GetField("應收帳款週轉率(次)","Q")>GetField("應收帳款週轉率(次)","Q")[4] and //每季應收帳款週轉率都進步,且今年比去年好
 GetField("應收帳款週轉率(次)","Q")[1]>GetField("應收帳款週轉率(次)","Q")[5] and
 GetField("應收帳款週轉率(次)","Q")[2]>GetField("應收帳款週轉率(次)","Q")[6] and
 GetField("應收帳款週轉率(次)","Q")[3]>GetField("應收帳款週轉率(次)","Q")[7] and
 GetField("應收帳款週轉率(次)","Q")>GetField("應收帳款週轉率(次)","Q")[1] and
 GetField("應收帳款週轉率(次)","Q")[1]>GetField("應收帳款週轉率(次)","Q")[2] and
 GetField("應收帳款週轉率(次)","Q")[2]>GetField("應收帳款週轉率(次)","Q")[3]
then
 condition1 = true;
 
If GetField("存貨週轉率(次)","Q")>GetField("存貨週轉率(次)","Q")[4] and //每季存貨週轉率都進步,且今年比去年好
 GetField("存貨週轉率(次)","Q")[1]>GetField("存貨週轉率(次)","Q")[5] and
 GetField("存貨週轉率(次)","Q")[2]>GetField("存貨週轉率(次)","Q")[6] and
 GetField("存貨週轉率(次)","Q")[3]>GetField("存貨週轉率(次)","Q")[7] and
 GetField("存貨週轉率(次)","Q")>GetField("存貨週轉率(次)","Q")[1] and
 GetField("存貨週轉率(次)","Q")[1]>GetField("存貨週轉率(次)","Q")[2] and
 GetField("存貨週轉率(次)","Q")[2]>GetField("存貨週轉率(次)","Q")[3]
then
 condition2 = true; 
 
//最近5季正現金流量
if GetField("營業現金流量/營業利益")[5] >0 and GetField("營業現金流量/營業利益")[4] >0 and
 GetField("營業現金流量/營業利益")[3] >0 and GetField("營業現金流量/營業利益")[2] >0 and
 GetField("營業現金流量/營業利益")[1] >0 and GetField("營業現金流量/營業利益")[0] >0
then condition3 = true ;

If condition1 and condition2 and condition3
then ret=1;

 
outputfield1(GetField("應收帳款週轉率(次)","Q")[7],"7應收周轉");
outputfield2(GetField("應收帳款週轉率(次)","Q")[6],"6應收周轉"); 
outputfield3(GetField("應收帳款週轉率(次)","Q")[5],"5應收周轉");
outputfield4(GetField("應收帳款週轉率(次)","Q")[4],"4應收周轉"); 
outputfield5(GetField("應收帳款週轉率(次)","Q")[3],"3應收周轉");
outputfield6(GetField("應收帳款週轉率(次)","Q")[2],"2應收周轉"); 
outputfield7(GetField("應收帳款週轉率(次)","Q")[1],"1應收周轉");
outputfield8(GetField("應收帳款週轉率(次)","Q")[0],"0應收周轉");

outputfield31(GetField("存貨週轉率(次)","Q")[7],"7存貨周轉");
outputfield32(GetField("存貨週轉率(次)","Q")[6],"6存貨周轉");
outputfield33(GetField("存貨週轉率(次)","Q")[5],"5存貨周轉");
outputfield34(GetField("存貨週轉率(次)","Q")[4],"4存貨周轉");
outputfield35(GetField("存貨週轉率(次)","Q")[3],"3存貨周轉");
outputfield36(GetField("存貨週轉率(次)","Q")[2],"2存貨周轉");
outputfield37(GetField("存貨週轉率(次)","Q")[1],"1存貨周轉");
outputfield38(GetField("存貨週轉率(次)","Q")[0],"0存貨周轉");

outputfield51(GetField("營業現金流量/營業利益")[5],"5現金流量");
outputfield52(GetField("營業現金流量/營業利益")[4],"4現金流量");
outputfield53(GetField("營業現金流量/營業利益")[3],"3現金流量");
outputfield54(GetField("營業現金流量/營業利益")[2],"2現金流量");
outputfield55(GetField("營業現金流量/營業利益")[1],"1現金流量");
outputfield56(GetField("營業現金流量/營業利益")[0],"0現金流量");

 

XQ小幫手 發文於   2018/04/23

Hi 好朋友,

您好,待小幫手查看後,再向您說明,謝謝您。

XQ小幫手 發文於   2018/04/24

Hi 好朋友,

請將 Condition1 和 Condition2 初始化,不然在歷史資料中 True 的話,那就永遠都是 True 囉~

故請將以下兩行放到程式碼最前面,然後再試試看,應該就無問題了

condition1 = false;
condition2 = false;

 

發表回覆
Close