用朱家泓的選股邏輯寫XQ程式來選股

用朱家泓的選股邏輯寫XQ程式來選股

 上一篇已經說明朱家泓的選股邏輯, 在此不在重複

XQ XS「選股腳本」,不要只做一個條件,而是做成「嚴格版」:只有趨勢、均線、紅K突破、量能四項同時成立才出現。

1. 我先把朱家泓邏輯「程式化」

朱家泓邏輯XS條件
頭頭高今日突破近20日高點
底底高10日低點 > 前一個10日低點
MA5/10/20多頭MA5 > MA10 > MA20
股價站均線Close > MA5、MA10、MA20
均線上揚MA5 > MA5[1]、MA10 > MA10[1]
紅KClose > Open
漲幅 >2%Close > Close[1] × 1.02
突破前高Close > 前20日最高價
爆量Volume > 前5日均量 × 1.3
金叉MA5向上穿越MA10

其中「頭頭高、底底高」很難完全用數學精確描述,因此我用近期高點突破+近期低點逐步墊高來近似。這比單純寫「股價 > MA20」更接近我要的交易邏輯。


2. 修改朱家泓邏輯「程式化

但是如果要求:

突破+MA5/10金叉+紅K >2%+1.3倍量

條件會非常嚴格。

很多真正的主升段股票,在突破之前 MA5/MA10 已經黃金交叉,所以到了真正突破日,CrossOver(MA5,MA10) 已經不會再次成立。

也就是說:

你會漏掉很多好股票。

把「黃金交叉」從必要條件改成「多頭排列」。

也就是:

MA5 > MA10 > MA20 + 均線向上

而不是一定要今天才發生黃金交叉。


** 我更推薦再增加一個「成交量門檻」

這非常重要。

否則程式可能選出:

小型股、成交量只有幾百張,但突然放量1.3倍。

這種股票不一定適合你的策略。

例如加入:

Condition5 =

    Average(Volume[1], 5) >= 1000;

這樣會變成:

朱家泓突破策略+流動性過濾

XQ官方的選股範例也會使用「前5日均量」作為流動性條件。


**但是我要修正一件事


我們原本程式

把:

「突破20日高」

設定成必要條件,會太硬。

例如一檔非常漂亮的主升段股票:今天可能已經非常接近前高:

距離前高只有 0.5%

但還沒有正式突破。

我們會:

❌ 不選

可是這種股票可能是明天最好的突破候選股

所以不要讓程式只有:

「選」或「不選」

而是分成兩組。

🟢 A組:已突破

主升段確認

必須:

  • MA5 > MA10 > MA20
  • 均線向上
  • 底底高
  • 突破20日高
  • 紅K
  • 漲幅2~7%
  • 量 ≥ 1.5倍

這就是:

A級:可以研究進場


🟡 B組:準備突破

條件:

  • MA5 > MA10 > MA20
  • 均線向上
  • 底底高
  • 距離20日高點 ≤ 3%
  • 漲幅 ≥ 1%
  • 成交量開始增加

這就是:

B級:明天觀察


KD怎麼處理?

反而可以把它變成:

「加分項」

而不是必要條件。

例如:

條件分數
MA5 > MA10 > MA20+20
MA5/10/20向上+15
突破20日高+25
底底高+15
量 ≥ 1.5倍+15
漲幅2~7%+5
KD K>D+5
總分100

這樣就非常漂亮。


我們直接升級成:

朱家泓 V3.0「突破+準突破+評分」

最後每天只產生:

A級:真正突破 → Top 3

B級:即將突破 → Watchlist 5~10檔

C級:強勢但過熱 → 不追


一、V3.0 的邏輯

🟢 A級:突破確認

必須符合:

  1. MA5 > MA10 > MA20
  2. MA5、MA10向上
  3. 底底高
  4. 突破前20日高點
  5. 紅K
  6. 今日漲幅 2%~7%
  7. 今日量 ≥ 前5日均量 1.5倍

這是我們真正要找的:

主升段已經表態


🟡 B級:準突破

條件稍微放寬:

  1. MA5 > MA10 > MA20
  2. MA5、MA10向上
  3. 底底高
  4. 尚未突破20日高
  5. 但收盤距離前20日高 ≤3%
  6. 今日漲幅 ≥1%
  7. 今日量 ≥5日均量1.1倍

這種股票的意義是:

今天還沒突破,但已經站在突破點旁邊。

這類股票反而很值得隔天盯盤。


二、評分方式

我建議100分制:

條件分數
MA5 > MA10 > MA2020
MA5、MA10向上10
底底高15
突破20日高25
成交量 ≥1.5倍15
漲幅2~7%10
KD K>D5
總分100

所以:

90~100

🔥 S級

80~89

🟢 A級

70~79

🟡 B級

<70

不列入主要觀察。


三、XQ V3.0 程式

SetTotalBar(100);


Input:

    BreakoutDays(20),

    VolumeDays(5),

    VolumeRatio(1.5),

    NearBreakRatio(3),

    MinRise(2),

    MaxRise(7);


Variable:

    MA5(0),

    MA10(0),

    MA20(0),

    PrevHigh(0),

    AvgVol5(0),

    RisePct(0),

    LowNow(0),

    LowPrev(0),

    Score(0),

    Signal(0),

    RSV(0),

    KValue(0),

    DValue(0);


MA5 = Average(Close, 5);

MA10 = Average(Close, 10);

MA20 = Average(Close, 20);


PrevHigh = Highest(High[1], BreakoutDays);


AvgVol5 = Average(Volume[1], VolumeDays);


RisePct = (Close / Close[1] - 1) * 100;


LowNow = Lowest(Low, 10);

LowPrev = Lowest(Low[10], 10);


Stochastic(9, 3, 3, RSV, KValue, DValue);



// ====================================

// 基本條件

// ====================================


TrendOK =

    MA5 > MA10

    and MA10 > MA20;


SlopeOK =

    MA5 > MA5[1]

    and MA10 > MA10[1]

    and MA20 >= MA20[1];


PriceOK =

    Close > MA5

    and Close > MA10

    and Close > MA20;


BottomOK =

    LowNow > LowPrev;


RedK =

    Close > Open;


VolumeStrong =

    Volume >= AvgVol5 * VolumeRatio;


RiseOK =

    RisePct >= MinRise

    and RisePct <= MaxRise;


KDOK =

    KValue > DValue;



// ====================================

// A級:突破確認

// ====================================


ACondition =

    TrendOK

    and SlopeOK

    and PriceOK

    and BottomOK

    and Close > PrevHigh

    and RedK

    and RiseOK

    and VolumeStrong;



// ====================================

// B級:準突破

// ====================================


BCondition =

    TrendOK

    and SlopeOK

    and PriceOK

    and BottomOK

    and Close < PrevHigh

    and Close >= PrevHigh * (1 - NearBreakRatio / 100)

    and RisePct >= 1

    and RisePct <= MaxRise

    and Volume >= AvgVol5 * 1.1;



// ====================================

// 評分

// ====================================


Score = 0;



// MA多頭排列


if TrendOK then

    Score = Score + 20;



// 均線向上


if SlopeOK then

    Score = Score + 10;



// 底底高


if BottomOK then

    Score = Score + 15;



// 突破20日高


if Close > PrevHigh then

    Score = Score + 25;



// 量能


if Volume >= AvgVol5 * 1.5 then

    Score = Score + 15

else if Volume >= AvgVol5 * 1.1 then

    Score = Score + 8;



// 漲幅


if RisePct >= 2 and RisePct <= 7 then

    Score = Score + 10;



// KD


if KDOK then

    Score = Score + 5;



// ====================================

// 訊號分類

// ====================================


if ACondition then

    Signal = 1

else if BCondition then

    Signal = 2

else

    Signal = 0;



// ====================================

// 最終選股

// ====================================


Ret =

    ACondition

    or BCondition;



// ====================================

// 輸出

// ====================================


OutputField(1, Signal, 0, "訊號");


OutputField(2, Score, 0, "評分");


OutputField(3, RisePct, 2, "漲幅%");


OutputField(4, Volume / AvgVol5, 2, "量比");


OutputField(5, Close / PrevHigh * 100, 2, "前高%");


OutputField(6, KValue, 1, "K值");


OutputField(7, DValue, 1, "D值");


四、V3.0 評分制度

最後我們不是只做「符合/不符合」。

而是評分。

條件分數
MA5 > MA10 > MA2020
均線向上10
底底高15
突破20日高25
成交量 ≥ 1.5倍15
漲幅2~7%10
KD K>D5
總分100

九、A級與B級


🟢 A級:已突破

必須同時符合:

  • MA5 > MA10 > MA20
  • 均線向上
  • 股價站三均線
  • 底底高
  • 突破20日高
  • 紅K
  • 漲幅2~7%
  • 成交量1.5倍以上

這種股票代表:

主升段已經開始表態。


🟡 B級:準突破

不要求今天突破20日高。

但是:

距離20日高 ≤ 3%

同時:

  • MA5 > MA10 > MA20
  • 均線向上
  • 股價站三均線
  • 底底高
  • 今日漲幅 ≥1%
  • 成交量 ≥5日均量1.1倍

它代表:

還沒正式突破,但是已經站在起跑線附近。

所以 B級是:

「明天值得盯盤的候選股」


十、V3.0 最終的投資思維

整套邏輯其實可以濃縮成:

① 趨勢
MA5 > MA10 > MA20
② 均線向上
③ 股價站上均線
④ 底底高
⑤ 接近/突破20日高
⑥ 紅K表態
⑦ 成交量放大
⑧ 控制漲幅,避免追太高
⑨ KD輔助
⑩ 0~100分排名
A級 / B級
Top 3

最重要的一句話

V3.0不是「預測哪支股票會漲」。

而是:

等待股票自己證明它正在變強,再進場。

所以我們真正要找的是:

「趨勢向上+底部墊高+突破壓力+量價確認」

而不是:

今天漲幅最大。


V3.0 的交易順序

B級 → 等突破

A級 → 等隔日確認

A級 Top 3 → 才進一步做買點、停損、停利計算

這樣才符合我們一開始設定的「順勢動量突破」核心。

沒有留言 :