iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

投資小白的煉金之旅 - XScript快速入門系列 第 8

[Day08] 內建函數 - 取得欄位

接下來的幾天,我會介紹 XS 中的內建函數,顧名思義就是我們不用額外建立運算函數,就能呼叫取用。

內建函數根據使用情境大致分成以下這些函數

  • 處理對象的型別:字串函數、數學函數、陣列函數、時間函數、日期函數
  • 交易資料取得與執行環境相關:一般函數、欄位函數

在 XS 中,一切的基礎都是建立在各種交易資料的相互運算上。但是要怎麼樣才能讓我們可以很方便連結到這些交易資料呢?

所以今天介紹的,是跟取得交易資料有關的欄位函數。透過這些函數的使用,加上不同參數的傳遞,就能連結到各式各樣的交易資料。在 XS 編輯器中,有些還能以介面的方式進行語法的插入,大大地提升開發上的效率,也省去背一大堆資料欄位的名稱。

以下就來認識兩個基本,卻很常用的欄位函數。

GetField(名稱:string, 頻率?:string)

取得台股市場的融資券及法人的進出資料。在 指標警示 以及 選股 類型的腳本可使用。

第一個參數為中文或英文名稱。例如:"Ftotalbuy" or "外資買張"。
第二個參數為頻率,如有需要指定的話則填入頻率的代碼,否則頻率會跟腳本執行的頻率一樣。

天數 主題 說明
1 個 tick Tick 證券價格變動的最小幅度,即可能出現的最小升幅或跌幅
分鐘 正整數 e.g. 1, 45, 240
D
W
M
Q
半年 H
一年 Y
還原日 AD 避免因除權息的影響造成跳空缺口
還原週 AW 避免因除權息的影響造成跳空缺口
還原月 AM 避免因除權息的影響造成跳空缺口

在 XS 編輯器中,有兩種方式可以使用這類型的函數

  1. 點上方功能列的「加入欄位」
  2. 編輯區輸入 g,出現建議選項後,在 getfield(插入) 的項目雙擊

gif

跟前面提到的開高低收一樣,回傳值是一個序列。如果要取前 N 個時間單位的話,直接在後面加上 [N]

舉個簡單例子看看

If Close > Close[1] and  // 如果近一日漲幅為正且大於前一天外資買賣超張數
   GetField("外資買賣超") > GetField("外資買賣超")[1]
   then ret = 1;  // 觸發警示通知

GetQuote(名稱:string)

取得即時的報價欄位資料。目前僅能在 警示腳本 中使用。

GetField 不一樣的地方是,由於報價欄位的資料會即時更新,而且沒有前期資料。回傳值僅會是一個數值。

另外語法的呈現上,GetQuote 只是協助我們取得特定欄位的變數的方式,而不是最終的名稱。

在 XS 編輯器中,有三種方式可以使用這類型的函數

  1. 點上方功能列的「加入欄位」> 選擇 報價欄位
  2. 編輯區輸入 g,出現建議選項後,在 getquote(插入) 的項目雙擊
  3. 編輯區輸入 q_,出現建議選項,選擇想要插入的選項。

gif

看個例子。

Input: OpenGap(1);
Input: Downpercent(1);


if  q_DailyHigh = q_DailyOpen and // 如果當日開在最高
    q_DailyOpen > q_RefPrice * (1+ OpenGap/100) and // 而且跳空開出
    q_Last < q_DailyHigh * (1 - Downpercent/100) // 而且目前的價格 q_Last已經回落一定範圍
then ret=1; // 觸發警示通知

小結

我們接著要開始一步步熟悉每種函數的運用。今天介紹的欄位函數其實也不只這兩種,有興趣的可以前往底下的參考資源查看囉!

今天就到這邊
Happy trading ! 明天見囉 !/images/emoticon/emoticon37.gif

參考資源


上一篇
[Day07] 宣告參數與變數
下一篇
[Day09] 內建函數 - 一般函數
系列文
投資小白的煉金之旅 - XScript快速入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言