關於背離的寫法

By | 2015-12-28

有多位朋友不約而同的提到如何透過語法去描述兩個時間序列的”背離”,我試著用線性回歸的角度來跟大家分享我自己設計的”背離”腳本。

首先,XS內建函數中有一個叫作線性回歸斜率(linearregslope),如果您在腳本編輯器中按F1,會跳到函數的說明頁,您輸入linearregslope按enter,會看到以下的說明

122801

 

什麼是線性迴歸呢?

122802

就像上圖一樣,我們找出一條線, 這條線距離所有要計算的價位最近,就是所謂的線性迴歸,透過線性迴歸,我們可以找出價位群體的方向,這條線的斜率就是linearregslope。

當數據呈現上昇分佈時,線性迴歸的斜率是正的,下降分佈時,線性迴歸的斜率是負的。

我就是運用這個原理,寫出以下的背離函數

input:price(numericsimple),index1(numericsimple),length(numericsimple);
if length<5
then raiseruntimeerror("計算期別請超過五期");
value1=linearregslope(price,length);
value2=linearregslope(index1,length);

if value1>0 and value2<0
then deviate=-1
else
if value1<0 and value2>0
then deviate=1
else
deviate=0;

透過這個函數,我們就可以比較兩個數列,看看他們是否出現背離的情況,這個函數的寫法是當第一個值下跌而第二個值上昇時,函數的回傳值是 1 ,相反的則是-1 ,若兩個值同方向則是傳回0。

假設我們想找出收盤價下跌,但跟10日RSI上昇的股票,我們就可以運用這個函數,寫出下面這樣的腳本

value1=rsi(close,10);
if deviate(close,value1,10)=1
then ret=1;

透過這個函數,我們就可以隨時把兩個時間序列拿出來檢定是否有背離的現象了。