計算日期差距以及排除假日的問題(處置股)在線急

  •   354 
  • 最後發表   股海韭菜刀  2023 十一月 28
股海韭菜刀 發文於   2023/11/21

關於處置股10天期和12天期的差別,小弟我最近困擾好久,試著自己寫程式寫語法還是無法區別出來。主要是處置股有分10天期和12天期(不含假日,而且為2021年新制),而且也不知道如何排除假日

 

想請問想要選股篩選處置股12天期出來(區分10天期和12天期)語法該如何寫?目前的內建有

 

settotalBar(3);

value1 = GetField("處置開始日期");

if value1 = 0 then return;

 

value2 = GetField("處置結束日期");

value3 = getField("Date");

 

if value1 <> value1[1] and value3 > value2[1] then ret = 1 else return;

 

outputField1(value1,"處置開始日期");

outputField2(value2,"處置結束日期");

排序方式: 標準 | 最新
股海韭菜刀 發文於   2023/11/23

不知道小幫手有沒有看到

XQ小幫手 發文於   2023/11/24

Hello 股海韭菜刀,

 

您可以使用 Datediff 來計算兩個日期的差異天數。

不過需注意這有包含非交易日。

若不介意花比較久的時間來計算的話,您可以將資料讀取筆數設的長一些,然後用變數紀錄介於處置期間過了幾天。

舉例來說:

settotalBar(1000);

 

value1 = GetField("處置開始日期");

value2 = GetField("處置結束日期");

 

//只顯示2021以後的處置資訊

if value1 > 20210101 then ret = 1 else return;

 

if date = value1 then value3 = 1 else if date > value1 and date <= value2 then value3 +=1;

 

outputField2(value1, "處置開始日期");

outputField3(value2, "處置結束日期");

outputfield4(value3, "經過幾個工作天");

 

另外小幫手補充,小幫手回覆時都是由討論區的後面往前面回覆。(會依據用戶發問帳號是否有訂閱調整順序)

所以如果您在同一篇文章推文的話會造成您的文章被往前推,反而讓小幫手看到問題的時間變晚。

由於近來問題量不少,麻煩您發問後多等待一陣子。

股海韭菜刀 發文於   2023/11/25

很謝謝小幫手,辛苦了。想請問要如何排除非交易日呢??因為這才是重點所在,有些跨假日比較多的10天處置都會被歸類為處置12天期

XQ小幫手 發文於   2023/11/28

Hello 股海韭菜刀,

 

小幫手上面的範例腳本就是排除了非交易日的處置開始到處置結束經過的日期。

因為XQ的K棒只有交易日才會產生,所以只要計算開始結束之間經過幾根K棒就可以知道經過幾個交易日。

同理您也可以使用 GetBarOffset 來取得兩個日期的相對位置計算經過幾根K棒,但這同樣會受到資料讀取筆數影響。

發表回覆
Close