波段策略之固定天數後出場

  •   50 
  • 最後發表   菜鳥  2025 七月 30
菜鳥 發文於   2025/07/28

小編你好

我在自動交易中心每天啟動波段策略,腳本有設計固定天數出場,策略部位也有 "延續前次執行" & "自動執行有部位商品"

但是天數到了,仍未執行出場,但是跑回測卻有出場了,我查閱之前的問題回應,似乎有提到是不是需要 XQ 及自動交易中心24小時都開著呢?  策略部位若設定由腳本計算,執行商品是"指定選股"的情況下,執行商品似乎不會從計算起點重新計算?!

以下是腳本關於出場的程式碼,請問如果不是為了回測而是要真正能夠到期出場的話,該怎麼做呢? (波段策略觸發進場後當天收盤後&交易中心關閉之前、XQ關閉之前要如何設定策略部位? 這些看似簡單但總是無法產生想要的結果..)

input:dayexit(40, "多少天出場");

var: order_qty(0),day_count(0);

if  filled[1]>0 and filled <> 0 and GetFieldDate("Date")[1] <> GetFieldDate("Date") then day_count+=1;     

if  filled[1]>0 and filled>0 and close <> getField("跌停價", "D")   and   day_count+1 > dayexit

then setposition(0,market);

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/07/28

策略部位選取延續前次執行時,使用filledEntryDate可抓到最後一次進場的日期,再使用DateDiff函數可判斷今天距離進場日期有幾天。

菜鳥 發文於   2025/07/29

謝謝教授!!

不知教授有沒有方法可以計算不含假日的天數,並且可以用在實際出場而非回測的天數呢?

虎科大許教授 發文於   2025/07/29

抓到filledEntryDate之後,跑While迴圈,往前找GetField("日期", "D")[i]是EntryDate,並記錄迴圈數。

XS小編 發文於   2025/07/30

Hello 菜鳥,

 

小編補充,您也可以使用 GetBarOffset 來取得傳入日期的相對位置。

但需注意此函數要確保腳本有運算過該日,故資料讀取筆數要足夠才行,所以並非什麼情況都適用。

發表回覆
Close