大家好,分享「如何寫選股KD最近2次黃金交叉,分別設定不同的數值?」
例如:
最近 15 天內,
第一次黃金交叉當日D值取出,判斷10~20之間,
第二次黃金交叉當日D值取出,判斷50~80之間,
以上兩個條件都有達成後,篩選出商品,
篩選出的商品旁邊欄位,可以顯示出第一次與第二次交叉的D值。
大致撰寫邏輯:
1. 使用 Stochastic 語法運算KD值
2. 使用A紀錄變數搭配 if 判斷在 「第一次黃金交叉當日D值取出,判斷10~20之間」時,A紀錄變數歸零;否則A紀錄變數累加,以利判斷在相對K棒位置第幾根條件達成。
3. 再使用B紀錄變數搭配 if 判斷在 「第二次黃金交叉當日D值取出,判斷50~80之間」時,B紀錄變數歸零;否則B紀錄變數累加,以利判斷在相對K棒位置第幾根條件達成。
4. 最後判斷 A紀錄變數 大於 B紀錄變數 且 A紀錄變數 小於 最近 15 天,則篩選出該檔股票。
5. 加入選股後,將資料讀取筆數設為 100,有足夠的筆數算出來的KD數值才會正確。
範例篩選結果如下圖:

範例選股腳本程式碼如下,範例選股策略匯出檔案如附檔,以上提供給大家參考:
input: Length(9,"天數"), RSVt(3,"RSVt權數"), Kt(3,"Kt權數"), Length_Cross(15,"最近N天內"),
Dup_st(20,"第1次金叉D值上限"), Ddown_st(10,"第1次金叉D值下限"), Dup_nd(80,"第2次金叉D值上限"), Ddown_nd(50,"第2次金叉D值下限");
variable: rsv(0), k(0), _d(0), i_st(0), Record_Dst(0), i_nd(0), Record_Dnd(0);
Stochastic(Length, RSVt, Kt, rsv, k, _d);
if Dup_st >= _d and _d >= Ddown_st and k cross above _d then begin
i_st = 0;
Record_Dst = _d;
end else
i_st += 1;
if Dup_nd >= _d and _d >= Ddown_nd and k cross above _d then begin
i_nd = 0;
Record_Dnd = _d;
end else
i_nd += 1;
if i_st > i_nd and Length_Cross >= i_st then ret = 1;
outputfield1(Record_Dst,"第一次金叉D值");
outputfield2(Record_Dnd,"第二次金叉D值");
3 評論