2016年12月7日

【MultiCharts】轉折指標與函數(Pivot high、Pivot Low、SwingHigh、SwingLow)

「轉折」講起來帶有主觀成分,MC裡對轉折的界定是,以轉折高點為例(指標Pivot High)就是該K高點比左邊N根K棒及右邊N根K棒的高點都高(左右的N值可一樣或設不同),如下圖假設N=3所示:

到這裡,敏感的讀者可能會起疑,在即時行情(real time)觀點下「比右邊3根K棒高點都高」不就等同於是在跟未來比較嗎?這講法算對也算不對,其實MC是用事後觀點的方法在處裡這個難題,以上圖為例,當即時行情來到4號K棒時確立1號K棒符合左三右三最高的條件時,才回頭在1號K棒劃出指標(藍色十字)。同理,如果是以轉折當作交易訊號,空單也會在4號K棒確立符合條件後以Next Bar進場(如下圖以MC內建的「Pivot Extension SE」訊號進場):
以上是運用轉折(Pivot、Swing)這類指標或函式要先有的基本觀念。

MC內建的主要轉折指標與函式:

指標
指標
功能
Pivot High
標示轉折高點
Pivot Low
標示轉折低點

函式
函式
功能
Pivot
計算轉折,以下函示都是以Pivot為基礎衍生出來的
PivotHighVS
計算轉折高點價位
PivotHighVSBar
計算回推轉折高點位置(NK棒前),值=-1表示沒有符合轉折條件,值=N代表NK棒前有符合轉折
PivotLowVS
計算轉折低點價位
PivotLowVSBar
計算回推轉折低點位置(NK棒前),值=-1表示沒有符合轉折條件,值=N代表NK棒前有符合轉折
Swing High
PivotHighVS,計算轉折高點價位,差別在輸入Input稍有不同。
Swing Low
PivotLowVS,計算轉折低點價位,差別在輸入Input稍有不同。

基本上所有轉折指標或函式都源自於Pivot這個函式,該函式回傳2個值:Var0(轉折價位)及Var1(回推轉折的那根K棒位置),如果沒有符合轉折條件,兩者皆回傳回值-1,有興趣的讀者可以打開該函式原始碼深入研究。附帶一提,另外兩個轉折相關的函式「Swing High」與「Swing Low」,其實與「PivotHighVS」及「PivotLowVS」是相同,差別只是Swing系列的函數,在比較轉折是左右兩邊一樣K棒數去比,也就是參數不再分「LeftStrength」或「RightStrength」,統一以一個「Strength」來表示。

我們先從簡單又實用的Pivot High指標為例,來認識轉折高指標是怎麼畫出來的。

Pivot High需輸入三個變數:
參數
預設值
說明
Price
High
可輸入開(Open)(High)(Low)(Close)等,我們要算轉折高,採用High
LeftStrength
3
向前()比較NK棒,預設值3,表示轉折高比前面3K棒的高都要高。
RightStrength
3
向後()比較NK棒,預設值3,表示轉折高比後面3K棒的高都要高。

MC內建Pivot High函式語法:
==============================================
inputs: Price( High ), LeftStrength( 3 ), RightStrength( 3 ) ;

condition1 = PivotHighVSBar( 1, Price, LeftStrength, RightStrength, RightStrength + 1 ) <> -1 ;
if condition1
 then
      begin
      Plot1[RightStrength]( High[RightStrength], "PivotHi" ) ;
      Alert ;
      end
else
   NoPlot( 1 ) ;
===============================================

其中,以函式PivotHighVSBar判斷有無符合轉折高定義,傳回值不等於-1就是有符合。接下來運用到一個小技巧,以中括號”[]”方式(往回N根K棒取值或做動作),在確認符合轉折條件後,回頭把指標畫出來,至於回頭幾根呢?很簡單,我們轉折高是向右比較”RightStrength”根K棒,所以就一樣取”RightStrength”根回頭畫線並取值,如下:

Plot1[RightStrength]( High[RightStrength], "PivotHi" ) ;

如果是要自行在策略或指標去抓轉折高的值或是位置,就是用「PivotHighVS」及「PivotHighVSBar」這兩個函式:

PivotHighVS(Instance, Price, LeftStrength, RightStrength, Len):回傳轉折高價位。

PivotHighVSBar(Instance, Price, LeftStrength, RightStrength, Len):回傳轉折高位置,以轉折條件確認後回頭N根K棒的方式表達。

參數說明:
參數
說明
Instance
值為1,計算最近1個轉折高
Price
可輸入開(Open)(High)(Low)(Close)等,我們要算轉折高,採用High
LeftStrength
向前()比較NK棒,值為3,表示轉折高比前面3K棒的高都要高。
RightStrength
向後()比較NK棒,值為3,表示轉折高比後面3K棒的高都要高。
Len
整個計算需考慮多少K棒數,建議以RightStrength+1帶入

實例運用:

例如,假設要以最近一個轉折高(比左三、右三高)做為空單停損點,寫法如下:

[IntrabarOrderGeneration = false]

if PivotHighVS(1,high,3,3,4)<>-1 then
Value1= PivotHighVS(1,high,3,3,4);

If marketposition=-1 then buytocover("Pivot SX") next bar at value1 stop;

效果如下,以頸線壓力支撐作為停損點正也是以類似寫法來表達。


延伸閱讀:

歡迎加入LINE@
加入好友
(點擊上方圖示)