為自己的觀察名單標上交易訊號

By | 2015-10-01

我有一份觀察名單,在這個名單裡的股票,是我想要”找點買”的股票,這些股票有些是朋友報我的,有些是我自己研究後的心得,但什麼時候才是對的買點?這是一門大學問,特別是開盤時間裡不一定有空看盤,而且人生苦短,每天下班累的半死還要一直作功課,都讓我一直想辦法看看電腦能不能幫我更多的忙,最好是每天電腦自動幫我列出所有我觀察名單中的股票,有那些出現買進訊號?有那些還要觀望?有那些超跌了要開始留意? 我手上的持股,那些過熱了要開始留意賣點? 那些該賣出了? 這樣一來我每天只要回家花個五分鐘看一遍,就可以留單了。

以下是我做的小小實驗,透過XS選股,每天做出一份我觀察名單的交易訊號清單。

步驟一是先訂好交易訊號的依據。

例如我想用多空分數這個指標來做交易訊號的依據

我的規則是

1.當多空分數從5以下突破5代表”買進”訊號

2.當多空分數突破5之後,一直在五日均線之上,代表”持有”訊號

3.當多空分數突破10,代表” 過熱”

4.當多空分數跌破10,代表”賣出”

5.當多空分數跌破10之後且一直在五日均線之下,代表”觀望”

6.當多空分數跌破5,代表”超賣”

就像下面這張圖

100102

 

如果我們拿台積電當例子,大家可以從下面這張圖看出多空分數與台積電股價的對應關係
100101

 

大家如果對於多空分數很陌生,我把腳本再貼一次

1// 利用多種指標, 計算多空分數
2//
3variable: count(0);
4
5// 每次計算都要reset
6count = 0;
7
8//------------------ Arron指標 -------------------//
9variable: arron_up(0),arron_down(0),arron_oscillator(0);//arron oscillator
10arron_up=(25-nthhighestbar(1,high,25))/25*100;
11arron_down=(25-nthlowestbar(1,low,25))/25*100;
12arron_oscillator=arron_up-arron_down;
13if arron_up > arron_down and arron_up > 70 and arron_oscillator > 50
14then count=count+1;
15
16//------------------ 隨機漫步指標 ---------------//
17variable: RWIH(0),RWIL(0);
18value1 = standarddev(close,10,1);
19value2 = average(truerange,10);
20if value1 <> 0 and value2 <> 0 then
21begin
22RWIH=(high-low[9])/value2*value1;
23RWIL=(high[9]-low)/value2*value1;
24end;
25
26if RWIH > RWIL
27then count=count+1;
28
29//------------------ 順勢指標 -------------------//
30variable:bp1(0),abp1(0);
31if truerange <> 0 then
32bp1=(close-close[1])/truerange*100;//順勢指標
33
34abp1=average(bp1,10);
35if abp1 > 0
36then count=count+1;
37
38//---------- CMO錢德動量擺動指標 ----------------//
39variable:SU(0),SD(0),CMO1(0), SUSUM(0), SDSUM(0);
40
41if close >= close[1] then
42SU=CLOSE-CLOSE[1]+SU[1]
43else
44SU=SU[1];
45
46if close < close[1] then
47SD=CLOSE[1]-CLOSE+SD[1]
48else
49SD=SD[1];
50
51SUSUM = summation(SU,9);
52SDSUM = summation(sd,9);
53if (SUSUM+SDSUM) <> 0 then
54cmo1=(SUSUM-SDSUM)/(SUSUM+SDSUM)*100;
55
56if linearregslope(cmo1,5) > 0
57then count=count+1;
58
59//------------------ RSI指標 -------------------//
60variable: rsiShort(0), rsiLong(0);
61rsiShort=rsi(close,5);
62rsiLong=rsi(close,10);
63if rsiShort > rsiLong and rsiShort < 90
64then count=count+1;
65
66//----------------- MACD指標 -------------------//
67variable: Dif_val(0), MACD_val(0), Osc_val(0);
68MACD(Close, 12, 26, 9, Dif_val, MACD_val, Osc_val);
69if osc_val > 0
70then count=count+1;
71
72//----------------- MTM指標 -------------------//
73if mtm(10) > 0
74then count=count+1;
75
76//----------------- KD指標 --------------------//
77variable:rsv1(0),k1(0),d1(0);
78stochastic(9,3,3,rsv1,k1,d1);
79if k1 > d1 and k1 < 80
80then count=count+1;
81
82//----------------- DMI指標 -------------------//
83variable:pdi_value(0),ndi_value(0),adx_value(0);
84DirectionMovement(14,pdi_value,ndi_value,adx_value);
85if pdi_value > ndi_value
86then count=count+1;
87
88//----------------- AR指標 -------------------//
89variable: arValue(0);
90arValue = ar(26);
91if linearregslope(arValue,5) > 0
92then count=count+1;
93
94//----------------- ACC指標 -----------------//
95if acc(10) > 0
96then count=count+1;
97
98//----------------- TRIX指標 ----------------//
99if trix(close,9) > trix(close,15)
100then count=count+1;
101
102//----------------- SAR指標 ----------------//
103if close > SAR(0.02, 0.02, 0.2)
104then count=count+1;
105
106//----------------- 均線指標 ----------------//
107if average(close,5) > average(close,12)
108then count=count+1;
109
110// Return value
111//
112TechScore = count;

它其實代表的是在14個具代表性指標中有多少個指標目前是處於多頭狀態中。

 

 

定義好交易訊號之後,我們就可以根據這個標準來寫選股的腳本

這邊我們得先跟大家報告一下這種根據不同情況給不同交易訊號的腳本,在撰寫時,基本架構如下圖

100103

以下是一個撰寫這種依不同狀況,多輸出結果的腳本樣本
100104

如果要看完整的說明,請參考以下的連結

http://xshelp.xq.com.tw/xslesson/if..then

根據上述的語法結構,我就寫了多空分數的交易訊號腳本如下:

1setoutputname1("多空分數交易訊號");
2value1 = techscore();
3value2 = average(value1, 10);
4
5Value3 = CountIF(value2 crosses above 5,5);
6
7value4=CountIF(value2 crosses below 10,5);
8
9if value3 >1 then
10begin
11ret = 1 ;
12outputfield1("買進");
13end
14else
15if value2 >5 and value2 >average(value2,5)
16then begin
17ret=1 ;
18outputfield1("持有");
19end
20else
21if value2 >=10
22then begin
23ret=1 ;
24outputfield1("過熱");
25end
26else
27if value4>1
28then begin
29ret=1;
30outputfield1("賣出");
31end
32else
33if value2 >5 and value2 <average(value2,5) then begin
34ret=1;
35outputfield1("觀望");
36end
37else
38if value2<=5
39then begin
40ret=1;
41outputfield1("超賣");
42end;

接下來我就用這個腳本來跑我的觀察名單,其結果如下圖

100105

我把這個選股策略啟動每日自動報行之後,就可以每天看到根據多空分數所跑出來的交易訊號了。

接下來是把除了多空分數之外,其他的交易訊號規則也寫在腳本中,xs的腳本透過兩個語法
來定義選股結果欄位的名稱及欄位呈現的內容

setoutputname1(“多空分數交易訊號”); 代表的是欄位的名稱
outputfield1(“超賣”); 代表的是這個欄位的輸出結果

所以如果有第二個交易訊號的定義時,我們就可以用setoutputname2及outputfield2來呈現,

例如我們可以寫出

1setoutputname2("RSI交易訊號");
2IF RSI cross over 20
3then begin
4ret=1;
5outputfield2("買進");
6
7end;

這樣我們就可以在選股結果頁出現第二個交易訊號欄位。

透過這樣的方式,我們就可以每天看到我們觀察名單中的股票,根據特定標準,那些該進場,那些該出場了。

這樣一來,是不是可以節省不少時間呢?