【單元5】PowerLanguage常用函式(Function)
在上一個單元我們認識了PowerLanguage的構成要素、常用保留字以及運行邏輯等,我們已經初步準備好開始寫程式,要更快、更精準完成程式腳本,一定要善加運用函式。本章目的是介紹初學者認識最常用的內建函式,並以範例示範運用方式,至於自己編寫函式部分我們會在後面章節介紹。學保留字就像學英文單字,而學函式就像學英文片語,一樣沒巧門,基本的先背起來,日後多看多學,自然熟能生巧應用自如。
>>讀完本文您可以學到什麼?
什麼是函式(Function)
必學常用函式
- 說明:計算平均值
- 參數:
Price:要計算平均值的標的,可以是Open、High、Low、Close、Volume或自訂一變數等等。
Length:指定取近幾筆資料來計算平均,5就是算最近5個值來平均,以此類推。一如我們在之前提過MultiCharts/PowerLanguage的腳本運行是採時間序列的概念,每一根K棒就是一筆資料或運算值,這裡函式運算設定之Length就是指定運算最近期一定長度(或是理解為K棒數)的資料。
- 範例:以下程式碼可以畫出簡單移動平均線
Value1 = Average(Close,9);
Plot1(Value1, "AvgClose");
- 同類函式:Average(Price,Length)也可以用AverageFC(Price,Length)取代,後者在演算上比較有效率。此外相關的函式還有Xaverage(Price, Length) ,計算加權移動平均值。給予越近期的值較高權重,以均線來講,會比簡單移動平均線來得敏感而貼近盤勢。
- 說明:加總,等於是EXCEL的SUM函式
- 參數:
Price:要加總計算的標的,可以是Open、High、Low、Close、Volume等等
Length:幾抓近幾個值來加總,5就是算最近5個值來加總,以此類推。
- 範例:加總最近5根K棒的成交量
- 說明:比較最近的選取最大值。
- 參數:
Price:要比較大小的項目,可以是Open、High、Low、Close、Volume或自訂變數等等。
Length:比較的期間長度,決定要抓近幾個值(幾根K棒的值)來比較
- 範例:以最近5根K的最高點當作空單移動停損點
- 同類函式:Lowest(Price,Length)則是取最小值。
- 說明:在指定的值中取最大值,比較值以逗號隔開。Highest比較的是最近的一段連續資料,MaxList的比較值則是全賴使用者輸入/指定的特定值。
- 參數:Value1,Value2….:通常是用來比較自訂變數。
- 範例:例如我們想計算上影線,上影線公式為K棒最高價減去K棒實體的上邊價格(如果是紅K棒為收盤價,如果是黑K棒則為開盤價),此時我們就可以用運上MaxList函式。
- 同類函式:MinList(Value1,Value2,Value3, etc.)則是取最小值。
- 說明:抓日線的收盤價。一般我們的主圖是用日內分線,但常需要參考日線的開高低收價格,可以此函數直接取得。但特別留意如果商品交易時間是跨日的就不適用,例如台指加了夜盤。
- 參數:PeriodsAgo取幾天前的收盤價。
- 範例:取前天收盤價
CloseD(1);
- 同類函式:其他OpenD(PeriodsAgo)、HighD(PeriodsAgo)、LowD(PeriodsAgo)用法雷同,但一樣交易時間跨日的不適用。此外,相關的函式尚有週收盤價CloseW(PeriodsAgo)、月收盤價CloseM(PeriodsAgo)、年收盤價CloseY(PeriodsAgo)等內建函式可用運。
- 說明:累計過去一定K棒數中,符合特定條件的次數。此函式很實用。
- 參數:
Test:條件敘述
Length:檢定過去K棒數
- 範例:計算過去12根K棒中,收盤大於開盤(紅K)總數。
- 說明:判斷程式執行K棒是否是最近一根K棒。在「【單元3】PowerLanguage程式腳本運作規則」中我們了解到腳本的執行是從線圖上第一根K棒開始一一執行,但如果我們希望特定動作僅在最新一根K棒才執行,LastBarOnChart就會派上用場。
- 參數:無
- 範例:如果希望警示音效只有在最近一根K棒才撥放
- 說明:計算平均真實區間(簡稱ATR)。真實區間的用途相當廣泛,例如用來計算停損點數等。
- 參數:Length要計算幾個值來算平均
其他用函式及如何查詢檢索各函式功能
函式 | 用途 |
Absvalue(Value) | 計算絕對值 |
Correlation(Indep,Dep,Length) | 計算相關係數 |
StdDev(Price, Length) | 計算標準差 |
更為常用指標類型的函式,我們也列舉一些,建議可以參考內建指標或訊號,或是參考相關說明文件,觀摩這些函式是怎麼運用:
函式 | 用途 |
ADX(Length) | ADX指標 |
BollingerBand(Price, Length, NumDevs) | 布林通道指標 |
MACD(Price, FastLength, SlowLength) | MACD指標 |
Parabolic(AfStep) | SAR指標 |
Stochastic(PriceH, PriceL, PriceC, StochLength, Length1, Length2, SmoothingType, oFastK, oFastD, oSlowK, oSlowD) | KD指標 |
結論與練習
我們在之前單元中介紹過以兩行程式碼寫均線交叉策略,也是運用簡單的保留字及函式即可辦到,隨著讀者看過、記憶過的保留字及函式越來越多,就越能快速準確將腦海中的交易邏輯化成程式腳本。多練習範例是進步不二法門,這邊再出兩個練習題,讓大家動動腦:
1.如何畫出高低通道指標(最近5根K棒最高及最低點連線所形成的上下通道)?
2.如何畫出凱勒通道指標(Keltner Channel)?提示:凱勒通道公式為一條移動平均線上下加減N倍ATR(Average True Range)
【警語】:
- 本文所舉之語法範例為教學之用,非提供交易策略,請讀者警慎運用。
- 自動交易如遇系統異常或斷線等問題,可能暴露更高的風險,交易人仍應檢查電腦系統或網路之狀態,特別要隨時注意部位變化,以降低相關風險。