SetTotalBar資料讀取範圍與腳本執行的關係
選擇單元...
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 副檔名的檔案
當你在設定XS警示時,有沒有注意到有一個設定資料讀取範圍的參數,可以從這裡選擇筆數或是起始日期。這個參數的用意到底是什麼呢?在這一篇文章內就讓我們來為大家說明。在XS語法入門內,我們有提到XS執行時的觀念是類似K線圖一樣,由左往右一筆一筆的執行。而資料讀取範圍的這個參數,就是用來設定腳本要從哪裡開始執行起。如果你指定10筆的話,那系統就會提供最近10筆的K棒,然後從這10筆的第一根K棒(編號1)開始往右執行:在上圖內藍色這個區塊就是資料讀取範圍,這個數值的定義根據不同腳本類型而異:
那我們設定資料讀取範圍時,到底該用什麼樣子的數值才對呢?這個問題沒有一個標準答案,必須依照腳本的內容來判斷。有一些指標,例如EMA均線,或是MACD指標,由於計算時會不斷的引用前一筆計算的數值做累計的平均,像這樣子的腳本,就會需要一個比較大的資料讀取筆數。反之,如果一個腳本內只會使用到最近固定期別的數字的話,那資料讀取筆數就不用設的很大。資料讀取參數除了可以指定最近筆數之外,也可以指定一個固定的起始日期,這樣子可以方便使用者有更精準的控制。另外如果實際上這個商品並沒有那麼多筆資料的話,系統就會自動調整資料讀取筆數,以商品有的資料為基準。 所以在腳本要執行之前,系統除了要準備資料讀取範圍內的K棒資料之外,另外也需要往前多準備一些K棒資料:在上面圖示內,資料讀取範圍左邊的這一個黃色區塊,就叫做最大引用範圍。這個範圍的目的是為了讓腳本可以正確的參考到目前執行的這根K棒往前的資料。同樣的,這個範圍的大小,會跟腳本內會參考到幾期前的資料有關。系統在開始執行時會提供一個預設值,如果在執行過程內腳本參考到了範圍之外的資料而發生錯誤的話,系統還是會繼續執行,改由下一根K棒開始重新計算。在下面這張圖內,假如腳本的內容是由於最大引用筆數只有4筆,所以腳本要去讀取Close[5]的時候會發生錯誤。這時候系統就會重新調整執行的範圍,從發生錯誤的下一筆開始重新執行。發生錯誤之後系統自動重新調整最大引用範圍注意到系統會往右一筆重新執行,讓最大引用範圍變大,這樣子一來,執行的筆數會變少,可是就不會發生錯誤了。由於系統執行時會自動處理這種情形,使用者在大部分的情形底下可以完全忽略最大引用範圍這個參數。可是如果腳本的引用範圍很大的話,那則可以從腳本內透過函數的呼叫來告訴系統這個參數,已減少執行時發生錯誤的機會。這部分在底下會有範例說明。講完了基本的觀念之後,接下來我們來看不同類型的腳本的設定方式。 如果在指標腳本內引用SetTotalBar(300)的話,那這個指標就只會畫最新的300筆資料(不包含當日即時的資料)。如果你希望可以從某個指定日期開始畫圖,可以使用這一版新提供的SetFirstBarDate函數:這樣子的話指標就會從20150101日開始畫圖。至於最大引用範圍這個參數,系統會根據使用者指定的資料範圍來推算一個預設值。使用者也在腳本內透過SetBackBar這個函數來做控制:另外還有一個 SetBarBack函數,他的用途跟SetBackBar是一模一樣的。
腳本類型 | 資料讀取範圍 |
指標 | 指標總共要畫多少筆K棒,不包含當日即時的K棒範圍。 預設值是商品的全部資料長度。 |
警示 | 警示腳本要先執行多少筆之後開始進行即時的洗價以及是否要觸發。請注意這個範圍不包含當日即時的K棒。預設值是200。假設資料讀取範圍是10的話,那警示腳本會先執行當日之前的10根K棒,接下來執行當日即時的K棒,接下來等待收到即時資料後在執行時才會判斷是否要觸發。 |
選股 | 選股腳本要執行多少筆之後才判斷最後一根K棒是否觸發。 預設值是10。假設資料讀取範圍是10的話,則表示選股腳本總共要跑10筆資料,同時判斷第10筆資料是否ret=1。 |
最大引用範圍
執行腳本時,除了資料讀取筆數這個參數會影響腳本執行的筆數之外,另外由於腳本內常常需要讀取之前的資料來做計算,例如要計算3日收盤價平均值時,會引用到上一根K棒的收盤價以及上上一根K棒的收盤價:1Value1 = (Close + Close[1] + Close[2]) / 3;
1Value1 = Close - Close[5]; {計算5日漲幅}
XS自訂指標
在技術分析圖形上面放入XS自訂指標時,目前系統預設指標腳本的資料讀取筆數就是這個商品的全部歷史資料,技術分析的設定畫面上也就不提供指定資料讀取範圍的參數,你只要把指標放到技術分析圖上面就對了!!針對特殊的情境,可以在屬性設定的視窗,直接指定計算資料的長度或起始日。或是可以透過以下的函數從腳本內控制指標資料的長度:1SetTotalBar(300);
1SetFirstBarDate(20150101);
1SetBackBar(50);