在XScript編輯器,內建的選股腳本,已有【布林通道超買】與【KD黃金交叉】的內建選股腳本,

但是【布林通道超買】的內建策略是,當時最高價站到上軌之上,

而【KD黃金交叉】的內建策略是,當時的K值向上穿越D值,

 

並不符合,KD已經黃金交叉與收盤價站上布林通道上軌的選股腳本。

 

因此,將內建策略微調後,並將此兩條件結合為一個選股腳本,腳本程式碼如下

 

input:
    BollinLength(20),
    KDLength(9),
    UpperBand(2),
    RSVt(3), 
    Kt(3);

SetInputName(1, "布林通道天期");
SetInputName(2, "KD天期");
SetInputName(3, "布林通道標準差");
SetInputName(4, "RSVt權數");
SetInputName(5, "Kt權數");

variable: rsv(0), k(0), _d(0);

SetTotalBar(maxlist(KDLength,6) * 3);
Stochastic(KDLength, RSVt, Kt, rsv, k, _d);
if  K cross over _d then value1 = 1;
if  K cross below _d then value1 = 0;
if  value1 = 1 and close >= bollingerband(Close, BollinLength, UpperBand) then ret = 1;

 

程式碼大概說明如下:

程式碼第16行是,資料讀取範圍設置(SetTotalBar),若在此腳本沒有設置資料讀取範圍,則會出現讀取不到資料的錯誤,導致沒有選出任何商品。

程式碼第17行是,KD函數語法(Stochastic),計算K值與D值。

程式碼第18行是,若K值向上穿越(Cross Over)D值時,則 Value1 = 1; ,紀錄KD已經黃金交叉。

程式碼第19行是,若K值向下跌破(Cross below)D值時,則 Value1 = 0; ,Value1歸零,紀錄KD已經死亡交叉。

程式碼第20行是,若 Value1 = 1(KD已經黃金交叉) ,並且 收盤價站上布林通道(bollingerband)上軌 ,則選出商品清單。

 

以上說明與腳本程式碼,提供給大家參考,若有問題歡迎隨時指教,謝謝。