處置開始日期&處置結束日期
選擇單元...
XS語法進階應用
單元目錄
單元目錄
進階功能介紹
1-1 SetTotalBar資料讀取範圍與腳本執行的關係
1-2 SetBackBar指定頻率設定資料筆數
1-3 探討變數序列的觀念:幾天前黃金交叉商品為例
1-4 如何運用Print指令來抓程式的臭蟲
1-5 談OutputField跟GetFieldDate這兩個函數
1-6 計算區間漲跌幅的自訂函數
1-7 盤中即時資料欄位的應用
1-8 Tick欄位的應用
1-9 台股逐筆撮合的連續成交Tick序列
1-10 選股中心創掛牌新高與大單欄位的應用
1-11 集保相關欄位調整
1-12 如何使用函數取得商品的實際庫存數量
1-13 XS在可轉債的應用
1-14 XS函數「isfirstcall」說明
1-15 XScript 編輯器已支援 *.xs 副檔名的檔案
GetField("處置開始日期")、GetField("處置結束日期")這兩種資料在「資料欄位」與「選股欄位」都有建置,且所有腳本類型都有支援。在7.12.01/3.12.01當中,新增了一個系統指標叫【處置期間】,根據這兩個欄位所建立。可以在技術分析畫面上,點選右鍵→指標設定→新增主圖疊圖,查找系統/主圖指標/處置期間。新增後就會如下圖所顯示,在開始處置的前一日(5/17),即可取得即將開始處置的開始日期與結束日期(5/18~5/31),另外以黃色小點標記受處置的期間在線圖底部。但是在5/22時又公告延長了處置的結束日期至6/7,所以處置期間的標記會延續到6/7處置結束為止。同時也可以於上圖中看到,在5/18~6/7之後,到8月底之前,分別又進入過三次處置期間。以下提供目前的範例腳本,供參考或修改成自訂指標:
我們也可以在選股中心,利用這兩個欄位建置選股腳本,篩選出處置相關的策略,請參考以下範例:1. 處置中
if BarFreq <> "d" and BarFreq <> "ad" then raiseruntimeerror("僅支援日與還原日頻率"); value1 = GetField("處置開始日期"); value2 = GetField("處置結束日期"); value3 = getField("Date"); if value1 = 0 then raiseruntimeerror("無處置的歷史紀錄"); //用點顯示處置區間 if value3 >= value1 and value3 <= value2 then plot1(value1,"處置中") //尚在處置中 else if value3 < value2[1] and value3 > value1[1] then plot1(value1,"處置中") //尚在處置中,但處置結束日期被更新 else noplot(1); //用來顯示處置相關的日期數值 if value1 <> value1[1] or (value3 >= value1 and value3 <= value2) then begin plot3(value1,"開始日期"); plot4(value2,"結束日期"); end else begin noplot(3); noplot(4); end;
我們也可以在選股中心,利用這兩個欄位建置選股腳本,篩選出處置相關的策略,請參考以下範例:1. 處置中
settotalBar(5); value1 = GetField("處置開始日期"); if value1 = 0 then return; value2 = GetField("處置結束日期"); value3 = getField("Date"); if value3 >= value1 and value3 <= value2 then begin ret = 1; outputField1(value1,"處置開始日期"); outputField2(value2,"處置結束日期"); end else if value3 < value2[1] and value3 > value1[1] then begin ret = 1; outputField1(value1[1],"處置開始日期"); outputField2(value2,"處置結束日期"); end else return;以此腳本直接回測看看近10年,回測設定:回測結果:得到一個看似績效很好的回測報告,不過處置中的股票,不是想成交就能馬上成交的。這只能說明在過去十年,在持有十天、無停利損的前提下,處置期間的股價表現趨勢。 2.明天進入處置
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,"處置結束日期");以此腳本直接回測看看近10年,回測設定:回測結果:看起來比範例1來的實際一點,但是即便今天知道明天要進入處置,明天一樣不是想成交就能馬上成交的。 3.所以小幫手嘗試增加一個產業類別的濾網,把執行商品範圍限縮到【電子全部】:編輯策略的畫面如下,請記得範圍要使用自訂,設成電子全部,與其花時間想破頭要增加哪種技術面或基本面濾網,直接用產業類別當濾網也可以。用跟上方一樣的回測設定試試:回測結果:看起來得到比範例1績效更好的報表,但要先扛得住最大單筆虧損率、最大連續虧損率才有意義,如果把資金配置考慮進來,以及考慮更多實際操作時會面臨的狀況,報酬率一定會稀釋非常多。那就請各位再按自身條件做調整與嘗試了,謝謝~