如何使用XS選股腳本撰寫KD已經黃金交叉後,選出K值連續三根K線在80以上的台股商品?
首先,選股條件是
1. 先達到KD已經黃金交差
2. K值連續三根K線均在80以上
因此,選股腳本的範例程式碼如下,提供參考:
input:
KDLength(9),
RSVt(3),
Kt(3);
SetInputName(1, "KD天期");
SetInputName(2, "RSVt權數");
SetInputName(3, "Kt權數");
variable: rsv(0), k(0), _d(0);
SetTotalBar(maxlist(KDLength,6) * 3); // 設定資料讀取範圍
Stochastic(KDLength, RSVt, Kt, rsv, k, _d); // 計算K值與D值
if K cross over _d then value1 = 1;
if K cross below _d then value1 = 0;
// KD已經黃金交叉後,選出K值連續三根K線在80以上的台股商品
if value1 = 1 and trueall(K > 80, 3) then ret = 1;
// 選股清單呈現 K、K[1]、K[2] 的數值與取得資料的日期
outputfield(1, getfielddate("close"), 0, "K的日期");
outputfield(2, K, 2, "K");
outputfield(3, getfielddate("close")[1], 0, "K[1]的日期");
outputfield(4, K[1], 2, "K[1]");
outputfield(5, getfielddate("close")[2], 0, "K[2]的日期");
outputfield(6, K[2], 2, "K[2]");
上述的部分程式碼,資料讀取範圍設置 與 計算KD指標的部分,以及判斷【KD已經黃金交叉後】的條件,
與 如何寫出kd已經黃金交叉與收盤價站上布林通道上軌的選股腳本 的部分程式碼、撰寫方法與說明相同,
因此 Jack 在這部分就不予贅述,
程式碼說明:
程式碼第19行,... trueall(K > 80, 3) ...
trueall函數語法 為當期間內所有條件皆成立時,回傳True;其他狀況則回傳False,
trueall(K > 80, 3) 為判斷K棒是否連續三期均大於80,如果是的話回傳ture。
程式碼第 23 ~ 28 行,
使用 outputfield 與 getfielddate 語法,將計算出來的K值與取得K值的時間點,
記錄在選股清單中,方便檢閱查看。
請大家注意資料更新轉檔時間,而今日(07/28 早上11:00) 執行結果,如下圖:
以上,提供給大家參考。