2014年10月31日 星期五

函數(_daysLeftMonth):今天距離月底剩幾個交易日

朋友問我怎麼在 MultiCharts 寫出如標題的功能?到目前為止,其實我搞不定這個功能... 但是,做了接近的 fuction。

希望能有人分享出比較好的計算規則,讓我來寫看看。

我現在的作法是利用 Julian 格式做一下日期的轉換,計算今天到月底總共有幾天,比如 7月15日到 7月底會有16天,再減去今天到月底這段日子有幾天是週六或週日,來得到今天距離月底還剩下幾個交易日。這其實不是個完美的邏輯,只要從今天到月底中間有任何一天的週一到週五之間有放假就會算錯,有或者週六要交易(台灣特有?),也會算錯。

請建立一個數值型的 Fuction,名稱為 _daysLeftMonth,code 如下:
var:now(0),j(0),days2MonthEnd(0),holidays(0);

now=datetojulian(D);

holidays=0;
days2MonthEnd=0;
for j=1 to 50
begin

  if Month(JulianToDate(now+j)) > Month(D) or 
     Year(JulianToDate(now+j)) > Year(D) then 
  begin
    days2MonthEnd=j-1;
    break;
  end;

  if dayofweek(JulianToDate(now+j))=6 or 
     dayofweek(JulianToDate(now+j))=0 then 
    holidays=holidays+1;

end;


 _daysLeftMonth= days2MonthEnd - holidays; 


然後,我用 Print 試了一下,效果如下圖: