日KD向上時的60分鐘線盤整後噴出

By | 2016-07-05

隨著程式交易日漸引起大家的注意,小弟也開始從十年寒窗無人問,變成朋友詢問策略寫法的對象,最新被問到一個交易策略: “找出那些日線KD向上的股票中,60分鐘線盤整後創新高的”。

我整理了朋友的思考方式,把這個策略的想法歸納如下圖

0 70501

他的思考方向是如果個股KD 日線呈多頭排列,代表最近是多頭在主導,60分鐘線如果盤整一陣子,代表近期處於多頭在新佔領的地盤休養生息,休息夠了,一旦噴出,代表另一波的多頭走勢即將展開。

我根據這個思維,寫了以下的腳本,

//盤整後噴出
input: Periods(15,"計算期數");
input: Ratio(3,"近期波動幅度%");
input: TXT1("僅適用60分鐘","使用限制");
var:rsv1(0),k1(0),d1(0);
xf_stochastic("D",9, 3, 3, rsv1, k1, d1);
condition1 = false;

if (highest(high[1],Periods-1) - lowest(low[1],Periods-1))/close[1] <= ratio*0.01 
then condition1=true//近期波動在?%以內
else return;

if condition1 and high = highest(high, Periods)
and GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
and volume >=average(volume,20)*1.3
and k1>d1
and k1>50
and k1<80

then ret=1;

這個腳本有用到我之前有介紹過的兩個自訂函數,

現在已經成為XScript編輯器中的系統函數囉!

直接輸入函數呼叫即可,不需要在自訂函數腳本。

 

在此稍微介紹一下在盤後噴出腳本中,使用到這兩個函數的原因為,

一個是”xf_getvalue”,這是用來作跨頻率的資料對齊用的,

另一個是”xf_stochastic”,這個函數是用來計算跨頻率的KD值的,它的用法是

xf_stochastic(“頻率”,天期,3,3,rsv,K,D)

需要這麼處理的原因在於,我們在這裡跑的是60分鐘線,如果直接用KD的函數去跑,是跑不出日KD的正確數字的,因為60分鐘線的計算基礎下,前一根不會是前一天,所以需要先做資料對齊的處理,算出在60分鐘線之下,前第N根的數字才是日線要拿的值。

我回測一年60分鐘線之後的報告如下圖

070502

這樣的回測結果確實有比單純用60分鐘線去跑的時候勝率高出一些。

 

這當中有不少參數,停損停利的條件,以及應用的股票(我用的是有量的中小型股)可以調整,請各位自行找出最適合您自己的參數及應用的商品

 

跨頻率的腳本在撰寫時,如果有用到指標,都必須使用指定頻率的指標函數,不能直接引用系統提供的原有函數,希望XS可以儘早提供常用指標如RSI,MACD等等在跨頻率使用時的函數。