小幫手選語法請教 一直無法篩選出股票請教下面有哪些語法有誤

  •   141 
  • 最後發表   微笑多一點  2023 八月 09
微笑多一點 發文於   2023/08/06

setbarfreq("D"); //選股頻率日線

value1  = Average(getField("InvestorDifference","D"),5);      //計算 5期法人買賣超張數的移動平均

value2  = Average(getField("InvestorDifference","D"),10);     //計算10期法人買賣超張數的移動平均

value3  = Average(Volume,5);  //計算 5期成交量的移動平均

value4  = Average(Volume,10); //計算10期成交量的移動平均

value5  = Average(getField("Leadertotalbuy","D"),5);         //計算 5期主力買超張數的移動平均

value6  = Average(getField("Leadertotalbuy","D"),10);        //計算10期主力買超張數的移動平均

value7  = Average(getField("Leadertotalsell","D"),5);        //計算 5期主力賣超張數的移動平均

value8  = Average(getField("Leadertotalsell","D"),10);       //計算10期主力賣超張數的移動平均

Value9   = GetField("DSelfdifference");             //自營商自行買賣買賣超

Value10  = GetField("DSelfdifference")[1];          //前日自營商自行買賣買賣超

Value11  = GetField("LeaderDifference");            //主力買賣超張數

Value12  = GetField("LeaderDifference")[1];         //前日主力買賣超張數

Value13 = GetField("Pomremain");                    //融資餘額張數

Value14 = GetField("Pomremain")[1];                 //前日 融資餘額張數

Value15 = GetField("SBUnits");             //借券賣出張數

Value16 = GetField("SBUnits")[1];          //前日 借券賣出張數 

Value17 = GetField("TurnOverRatio");            //週轉率

value18 = GetField("Bigsharesheldratio",param := 400);    //持股400張以上

value19 = GetField("Bigsharesheldratio",param := 600);    //持股600張以上

value20 = GetField("Bigsharesheldratio",param := 800);    //持股800張以上

value21 = GetField("Bigsharesheldratio",param := 1000);   //持股1000張以上

value22 = GetField("Retailsharesheldratio",param := 100); //持股未滿100張

value23  = Average(Close,5);   //計算 5期成交價的移動平均 OK

value24  = Average(Close,10);  //計算10期成交價的移動平均 OK

value25  = Average(Close,20);  //計算20期成交價的移動平均 OK

 

value51 = NthHighestBar(1,volume,120);  //計算近120期最高的最高價的相對位置 OK

value52 = close[value51];               //近120期最高成交量的收盤價 OK

value53 = NthHighestBar(2,volume,120);  //計算近120期次的次量的最高價相對位置 OK

value54 = close[value53];                //近120期次成交量的收盤價 OK

value55 = NthHighestBar(3,volume,120);  //計算近120期次的次量的最高價相對位置 OK

value56 = close[value55];                //近120期次成交量的收盤價 OK

value59 = IFF(Close*1.1 > value52 and Close < value52,value52,IFF(Close*1.1 >value54 and Close < value54,value54,IFF(Close*1.1 >value56 and Close < value56,value56,0))); 

 

value61 = NthLowestBar(1,volume,120);   //計算近120期最高的最低價的相對位置 OK

value62 = close[value61];               //近120期最高成交量的收盤價 OK

value63 = NthLowestBar(2,volume,120);   //計算近120期次的次量的最低價相對位置 OK

value64 = close[value63];                //近120期次成交量的收盤價 OK

value65 = NthLowestBar(3,volume,120);   //計算近120期次的次量的最低價相對位置 OK

value66 = close[value65];                //近120期次成交量的收盤價 OK

value69 = IFF(Close*0.9 < value62 and Close > value62,value62,IFF(Close*0.9 < value64 and Close > value64,value64,IFF(Close*0.9 < value66 and Close > value66,value66,0))); 

 

condition1=false;

condition2=false;

condition3=false;

condition4=false;

condition5=false;

condition6=false;

 

if value23 < value24     

//成交價 5日小於 10日均線 (空頭排列)

then condition1=true;    

 

if high*1.02 > open      

//最高價大於開盤價 2%產生上影線

then condition2=true;

 

if volume>1000           

//今日成交量超過1000

then condition3=true; 

 

If value9 > value10   

//自營商自行買超大於前日

then condition4=true;

 

If value12 > value11   

//前日主力買賣超張數大於今日

then condition5=true;

 

If value15 > value16   

//借券賣出張數大於今日

then condition6=true;

 

{結果判斷}

IF

condition1

and condition2

and condition3

and condition4

    and condition5

and condition6

 

 

THEN

begin

ret=1;

End;

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

 Hello 微笑多一點,

 

您在使用欄位時可以參考 XSHelp 的說明。

大戶持股比例只有提供週頻率的資訊,且需注意該資料要到週末才更新,故當週中會需要取前一期的值。

所以簡單的話可以將 value18 ~ value22 修改為:

if GetInfo("TDCC_Mode") = 0 then value100 = 1 else value100 = 0;

 

value18 = GetField("Bigsharesheldratio", "W",param := 400)[value100 ];    //持股400張以上

value19 = GetField("Bigsharesheldratio", "W",param := 600)[value100 ];    //持股600張以上

value20 = GetField("Bigsharesheldratio", "W",param := 800)[value100 ];    //持股800張以上

value21 = GetField("Bigsharesheldratio", "W",param := 1000)[value100 ];   //持股1000張以上

value22 = GetField("Retailsharesheldratio", "W",param := 100)[value100 ]; //持股未滿100張

 

相關的說明可以參考 集保相關欄位調整 此篇文章。

發表回覆
Close