Author Archives: 發財橘子

重獲市場垂青的低價股

要怎麼判斷一檔低價股開始重新獲利市場的青睞? 例如像底下達運這樣的走勢呢?

2017121202

我的老市場朋友給了我兩條不算複雜的規則

規則一: 資金明顯回流到這檔股票

規則二: 連續多日主力買超

就這麼簡單嗎?

哦! 還有一個是盤不能太差

意思是大盤不太差時如果低價股出現資金明顯回流且主力連續多日買超,就該留意。

問題來了,資金要回流到什麼程度才算呢?

於是我寫了以下的腳本,回測了幾個不同的比例,最後發現,如果資金流向的比例是過去60天移動平均的四倍,回測出來的勝率最高,以下是我寫的腳本

//所有股票
//進場後20天出場

value1=GetField("資金流向");
value2=GetField("主力買賣超張數");

if value1 crosses over average(value1,60)*4
//資金流向明顯回昇
and trueall(value2>200,5)
//過去五日主力都買超超過兩百張
and tselsindex(10,6)=1
//大盤外資買多於賣
and close<40
//股價不高於40元
then ret=1;

回測報告如下

2017121301

大家也可以用這個簡單的腳本作基礎,調整資金回流的比例,然後再加上其他技術面的條件,可能會有更好的結果。

綜合抄底策略

近期的股價修正,讓抄底策略開始有了用武之地,之前跟大家提過,在股價修正四成之後,有不少抄底型的交易策略勝率會大幅攀昇,今天跟大家介紹的方法是,把不同的抄底策略全部綜合在一個腳本中,只要股價修正超過四成之後,符合其中任何一種現象,都會觸發訊號。

自從有了XS之後,我應該寫超過500個腳本,回測下來,跌幅超過四成後的各種訊號,勝率真的比較高。

例如到昨天收盤價為止,近百日跌幅超過四成,成交量超過五百張且股價高於十元的股票如下圖

2017120201

這些股票反彈起來,有不少還真的是又兇又猛。

並不是所有跌四成的股票都能買,之前跟大家分享過幾個抄底策略,如果下跌四成後又出現這些現象,進場作多的勝率往往超過六成。我把這些策略綜合在一個腳本中,希望可以節省各位的時間,

我寫的腳本如下

if close*1.4<highest(close,60)then begin
variable:count(0);
count=0;
//之前無長紅,最近兩根長紅
input:ratio(5,"長紅的漲幅下限");
if countif(close[5]>=close[6]*(1+ratio/100),60)=0
and countif(close>=close[1]*(1+ratio/100),5)>=2
then count=count+1;

//均線糾結後上漲
input: s1(5,"短期均線期數");
input: s2(10,"中期均線期數");
input: s3(20,"長期均線期數");
input: Percent(2,"均線糾結區間%");
input: Volpercent(25,"放量幅度%");
//帶量突破的量是超過最長期的均量多少%
variable: shortaverage(0);
variable: midaverage(0);
variable: Longaverage(0);

if volume > average(volume,s3) * (1 + volpercent * 0.01)
//放量25%
and lowest(volume,s3)<1000
//區間最低量小於一千張
and volume>2000
//今日成交量突破2000張
then begin
shortaverage = average(close,s1);
midaverage = average(close,s2);
Longaverage = average(close,s3);
value1= absvalue(shortaverage -midaverage);
value2= absvalue(midaverage -Longaverage);
value3= absvalue(Longaverage -shortaverage);
value4= maxlist(value1,value2,value3);
if value4*100 < Percent*Close
and linearregangle(value4,5)<10
then count=count+1;
end;
//低檔五連陽
if trueall(close>open,5) 
then count=count+1;
//急拉
value11=barslast(close>=close[1]*1.07);
if value11[1]>50
//超過50天沒有單日上漲超過7%
and value11=0
//今天上漲超過7%
and average(volume,100)>500
and volume>1000
then count=count+1;
//連續跳空上漲

if countif(open > close[1],5)>=3
//過去五天有三天以上開盤比前一天收盤高
and average(volume,5)>2000
//五日均量大於2000張
then count=count+1;

//連續多日價量回溫
input:period(5,"回溫期數");
value21=GetField("資金流向");
value22=GetField("強弱指標","D");
if countif(value21>value21[1]and value22>0,period)>= 4
and volume>average(volume,20)*1.3
then count=count+1;

//主力回頭收集
input:period1(20);
value31=GetField("分公司賣出家數")[1];
value32=GetField("分公司買進家數")[1]; 
if linearregslope(value31,period1)>0
//賣出的家數愈來愈多
and linearregslope(value32,period1)<0
//買進的家數愈來愈少
and 
close*1.03<close[1]
//今天又跌超過3%
 
then count=count+1;


if count>=1 then ret=1;
end;

我拿這個腳本去回測,並且對照單一腳本在沒有選股,沒有大盤濾網下的回測數據,作成以下的這張表

抄底策略統計表

以上是跑所有股票,回測過去兩年,二十天後出場的回測數據比較。

這個綜合的策略,交易次數夠多,勝率也夠高,除了在大空頭市場之外,表現非常的平穩。

抄底策略不只這幾個,例如我先前介紹過的大跌後的吊人線等,各位可以把收集得到,勝率夠高的策略都用同樣的寫法放在一起,這是小弟我認為最靠譜的交易策略了。

這種抄底策略的另一個好處是,停損點很好設,破底就停損。

雞尾酒策略雷達的函數化

因著雲端策略中心愈來愈普及於券商的下單系統,開始出現一種需求,希望可以綜合多個交易策略來考量,只有在特定幾個交易策略近N天內出現多個以上的交易訊號時才出現進場訊號。 這個需求PM應該是有收到,但考慮到 XQ一年才換三次版,且前面已經排了不少需求,所以我想從腳本下手,找出一個方法可以綜合多個腳本考量後再出訊號。

我想舉雲端策略中心裡的例子來跟大家說明這個方法

假設雲端策略裡長線作多的策略裡,我訂閱的策略如下表

2017121001

共有

1.跌不下去的高殖利率股

2.股價突破籌碼沈澱區

3.投信強買發動

4.爆量剛起漲

5.突破糾結均線

6.低PB股的逆襲

7.即將鎖第一根漲停的中小型股

一共七個策略,或希望如果這個七個腳本有超過兩個在三天內都有出訊號時,系統再通知我,我的作法是寫一個函數來計算近三天這七個腳本共出現多少個訊號。

我寫的函數腳本如下:

var:count(0);
count=0;

condition1=false;
condition2=false;
condition3=false;
condition4=false;
condition5=false;
condition6=false;
condition7=false;

//跌不下去的高殖利率股

 
condition8 = L = Lowest(L,20);
condition9 = H = Highest(H,20);
 
if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),60)
//大盤處於多頭市場
then begin 
 if condition9
 //股價創區間以來高點
 and TrueAll(Condition8=false,20)
 //這段區間都未破底
 and close<close[19]*1.05
 //區間股價漲幅不大
 then condition1=true;
end;

if barslast(condition1=true)<3
then count=count+1;

//股價突破籌碼沈澱區

condition10=false; 

if v[1] > 0 then value1 = (v[1] - GetField("當沖張數")[1])/v[1];
//實質成交比例
 
if value1[1] >0 then value2 = 100*value1/value1[1]-100;
//實質成交比例日變動百分比
value3 = standarddev(value2,5,1);
//實質成交比例日變動百分比的不同天期標準差
value4 = standarddev(value2,10,1);
value5 = standarddev(value2,20,1);
if value3 = lowest(value3 ,20) and
 value4 = lowest(value4 ,20) and
 value5 = lowest(value5 ,20) 
//現在各不同天期的成交比例日變動百分比標準差都處在期間最低點
then condition10=true;
 
// 成交量判斷
 

if tselsindex(10,6)=1
and condition10 
and close crosses over highest(high[1],10)
then condition2=true;
if barslast(condition2=true)<3
then count=count+1;

//投信強買發動

variable: SumForce(0), SumTotalVolume(0),Kprice(0), Kdate(0);
SumForce = Summation(GetField("投信買賣超")[1], 3);
sumTotalVolume = Summation(Volume[1], 3);

if SumForce > SumTotalVolume * 15/100 And Average(Volume[1], 5) >= 1000 then 
begin
 Kprice =highest(avgprice[1],3);
 Kdate = date[1];
end; 

Condition11 = C crosses above Kprice and datediff(date, kdate) <= 60; 
Condition12 = Average(Volume[1], 5) >= 1000;
Condition13 = Volume > Average(Volume[1], 5) * 1.2;
Condition14 = C > C[1];
condition15 = tselsindex(10,6)=1;
if Condition1 And Condition2 And Condition3 And Condition4 And condition5
then condition3=true;
if barslast(condition3=true)<3
then count=count+1;


//爆量剛起漲

 
Condition16 = H=highest(H,60);
 //今日最高創區間最高價
 
Condition17 = V=highest(v,60);
 //今日成交量創區間最大量
 
Condition18 = highest(H,60) < lowest(L,60)*(1 + 14*0.01);
 //今日最高價距離區間最低價漲幅尚不大
 
if Condition1 And Condition2 And Condition3
and tselsindex(10,6)=1
then condition4=true;
if barslast(condition4=true)<3
then count=count+1;

//突破糾結均線
variable: Shortaverage(0),Midaverage(0),Longaverage(0);
variable: AvgHLp(0),AvgH(0),AvgL(0);

//透過Z的時間安排來決定現在用的是那一根Bar的資料 
variable: Z(0);
if currenttime > 180000 
or currenttime < 083000 then 
 Z =0 
else 
 Z=1;

Shortaverage = average(close,5);
Midaverage = average(close,10);
Longaverage = average(close,20);
AvgH = maxlist(Shortaverage,Midaverage,Longaverage);
AvgL = minlist(Shortaverage,Midaverage,Longaverage);

if AvgL > 0 then AvgHLp = 100*AvgH/AvgL -100;

condition19 = trueAll(AvgHLp < 5,20);
condition20 = V > average(V[1],20)*(1+25/100) ;
condition21 = C > AvgH *(1.02) and H > highest(H[1],20);
condition22 = average(volume[1], 5) >= 1000; 
condition23 = tselsindex(10,6)[Z]=1;

if condition19
and condition20 
and condition21 
and condition22
and condition23
then condition5=true;
if barslast(condition5=true)<3
then count=count+1;

//低PB股的逆襲

if GetSymbolField("tse.tw","收盤價") > average(GetSymbolField("tse.tw","收盤價"),10)
then begin
 if close<12
 and H = highest(H,20)
 and close<lowest(low,20)*1.07
 and highest(h,40)>close*1.1
 then
 condition6=true;
end;
if barslast(condition6=true)<3
then count=count+1;

//即將鎖第一根漲停的中小型股
 
Condition24 = Close >= GetField("uplimit") * (1 - 1/100);
Condition25 = TrueAll(Close < GetField("uplimit"), 20);
Condition26 = Average(Volume, 5) >= 1000;
Condition27 = Close > Highest(High[1], 20);
Condition28 = Volume >= Highest(Volume[1], 20);
Condition29 = GetSymbolField("tse.tw","收盤價") > average(GetSymbolField("tse.tw","收盤價"),10); 
if Condition24 And Condition25 And Condition26 And Condition27 And Condition28 and condition29
then condition7=true;
if barslast(condition7=true)<3
then count=count+1;
entrycount=count;

這個腳本的作法是用計數器的寫法來計算每個腳本是否符合三天內出訊號的條件,用barslast這個函數來計算特定策略三天內是否出現訊號,最後完成這個函數,透過這個函數寫的警示腳本就可以變的很簡單

if entrycount cross over 1 then ret=1;

有了這個函數之後,如果我們要找出這七個腳本在三天內不只出現一個訊號,一行就寫完了。

各位可以利用這樣的寫法,把同頻率的策略雷達合成一個腳本去跑,如果要當天同時都出訊號,就不要用barslast就可以。

透過這樣的方法,就可以達到綜合多個策略考量,當不只一個策略出訊號時才通知的效果。

 

 

 

大跌後出現什麼K線型態可以進場?

這一波的下跌來勢不善,陸續被問到大跌後踫到什麼情況可以進場買股票? 今天我從K線型態出發,來看看股價如果跌三成後,出現的幾種K線組合,那一種回昇的機率較高。

 

首先我寫了一個函數叫BKPatterm,把幾個常見的多頭反轉K 線組合都包含在這個函數裡,由於此函數回傳類型為字串型態,故新增函數腳本時記得回傳類型勾選”字串”

20171208_字串

我寫的腳本如下:

settotalbar(5);
condition2 = (minlist(open,close)-Low) > absvalue(open-close)*3; 
condition3 = minlist(open, close) > low* (100 + 2)/100;

if trueall( condition2 and condition3, 3)
then bkpatterm="三長下影線";


{[檔名:] 紅三兵 
[說明:] 連續三根上漲實體K棒 
} 
 
condition1= ( close - open ) >(high -low) * 0.75;
//狀況1:實體上漲K棒
condition4= ( close[1] - open[1] ) >(high[1] -low[1]) * 0.75;
//狀況2:前一根也是實體上漲K棒
condition5= ( close[2] - open[2] ) >(high[2] -low[2]) * 0.75;
//狀況3:前前根也是實體上漲K棒
condition6= close > close[1];
//狀況4: 上漲
condition7= close[1] > close[2];//狀況5:上漲
{結果判斷} 
IF 
 condition1
 and condition4
 and condition5
 and condition6
 and condition7
THEN bkpatterm="紅三兵"; 

condition8= ( open[2] - close[2] ) >(high[2] -low[2]) * 0.75;
//狀況1:實體下跌K棒
condition9= ( close[1] - open[1] ) >(high[1] -low[1]) * 0.75;
//狀況2:實體上漲K棒
condition10= high[1] < high[2] and low[1] > low[2];
//狀況3:前期內包於前前期
condition11=( close - open ) > 0.75 *(high -low);
//狀況4:當期實體上漲K棒
condition12=close > open[2];
//狀況5:現價突破前前期開盤價
IF condition8
 and condition9
 and condition10
 and condition11
 and condition12
THEN bkpatterm="內困三日翻紅"; 


condition13=open = High and close < open ;//狀況1: 開高收低留黑棒
 condition14=(high -low) > 2 *(high[1]-low[1]) ;//狀況2: 波動倍增
 condition15=(close-low)> (open-close) *2 ;//狀況3: 下影線為實體兩倍以上
 
IF condition13
 and condition14
 and condition15
THEN bkpatterm="吊人線"; 


condition16=(open[1] - close[1] ) >(high[1] -low[1])*0.75;
//狀況1:前期出黑K棒
condition17=( close - open ) >(high -low) * 0.75;
//狀況2:當期紅棒
condition18=high > high[1];
//狀況3:高過昨高
condition19=open<low[1];
//狀況4:開低破昨低 
IF condition16
 and condition17
 and condition18
 and condition19
THEN bkpatterm="多頭吞噬"; 

{ 
[檔名:] 多頭執帶 
[說明:] 開在最低點一路走高收在最高點附近的K棒 
}
condition20=close>open; 
condition21=(Close-Open)>(high-low)*0.9;
condition22=Close>Close[1]+high[1]-low[1]; 
IF condition20
 and condition21
 and condition22
THEN bkpatterm="多頭執帶"; 

{ 
[檔名:] 多頭母子 
[說明:] 前期收長黑K棒 今期開高小幅收紅不過昨高 
} 
 
 
condition23=( open[1] - close[1] ) >(high[1] -low[1])*0.75;
//狀況1:前期出長黑K棒
condition24=close[3]-close[2]<close[2]-close[1]; 
//狀況2:前期呈波動放大下跌
condition25=( close - open ) >(high -low) * 0.75;
//狀況3:當期紅棒
condition26=high < high[1];
//狀況4:高不過昨高
condition27=low>low[1];
//狀況5:低不破昨低
 
IF 
 condition23
 and condition24
 and condition25
 and condition26
 and condition27
THEN bkpatterm="多頭母子";

{ 
[檔名:] 多頭遭遇 
[說明:] 前期收黑K棒 當期開低走高紅棒嘗試反攻昨收 
}
 
condition28= (open[1] - close[1] ) >(high[1] -low[1]) * 0.75;
//狀況1:前期出黑K棒
condition29= close[1] < close[2];
//狀況2:前期收跌
condition30= ( close - open ) >(high -low) * 0.75;
//狀況3:當期收紅K棒
condition31= open < close[1] and close < close[1];
//狀況4:開低且收跌
condition32= low < low[1];//狀況5:破前期低點
{結果判斷} 
IF 
 condition28
 and condition29
 and condition30
 and condition31
 and condition32
THEN bkpatterm="多頭遭遇";

有了這個腳本,接下來的策略腳本就變的很簡單寫,例如我如果要找大跌三成後出現紅三兵的股票,就可以像下面這樣寫

if close*1.3<close[30]
and bkpatterm="紅三兵"
then ret=1;

如果想找跌三成後出現吊人線的股票,就把腳本中的紅三兵改成吊人線就可以了。

在這個腳本裡,我一共把八種多頭K線型態包含到BKPatterm這個函數中,分別是

三長下影線

三長下影線

紅三兵

紅三兵

內困三日翻紅

內困三日翻紅

吊人線

吊人線

多頭吞噬

多頭吞噬

多頭執帶

多頭執帶

多頭母子

多頭母子

多頭遭遇

多頭相逢

接下來就用上面的腳本分別回測這些型態在個股大跌三成後出現該型態後的二十天後股價是上漲還是下跌,以下是過去三年的回測數字

大跌後的K線型態勝率

從這些數字來看,多頭遭遇出現的次數多,勝率高且平均報酬率也高,是最具實戰意義的K線型態。

 

用CANSLIM選股法則來說明XS選股平台的四種選股條件產生方法

William J. ONeil(威廉歐尼爾)是美國知名的成長型投資大師,他寫的笑傲股市這本書到現在賣超過100萬本,他創的投資者日報,全美訂戶超過30萬戶,他在研究每年美國上漲最兇猛的股票後,發明了CANSLIM選股法則,今天就以CANSLIM法則來做例子,跟大家分享如何透過XS選股中心這個平台,運用系統內建的選股條件,加上系統內建的排行條件,加上自己寫的選股腳本,再加上自己寫的排行條件,完成一個自創的選股系統。

首先我先說明CANSLIM是那七個條件

C:當季EPS成長率至少18~20%(Current quarterly earning per share must be up at least 18~20%)。

A:過去五年EPS顯著成長,複合成長率超過15%(Annual earning per share should be meaningful growth over the last five years, the annual compounded growth rate of earnings in the superior firms should be from 15% to 50%, or even more per year)。

N:新產品、新管理階層或股價創新高 (Buy companies with new products, new management, or significant new changes in their industry conditions, and most important, buy stocks as they initially make new highs in price. Forget cheap stocks—they are usually cheap for a good reason)。

S:流通在外股數少,非大型股,非老公司(Shares outstanding should be small or of reasonable number, not large capitalization, older companies)。

L:漲幅領先市場其他股票,股價表現是績優生(Leader :the 500 best performing stocks from 1953 to 1990 averaged a relative price strength of 87)。

I:機構法人買超(Institutional sponsorship:Buy stocks with at least a few institutional sponsors with better than average recent performance records)。

M:市場走向(Market Direction)。

基於上述的規則,我的選股系統,需符合下面幾個規則:

C:最近兩季EPS平均年增率排在前面

A:過去五年EPS複合成長率超過15%

S:總市值小於300億台幣

L:過去兩年漲幅屬於領先群

I: 投信,外資持有一定張數

在XS上,要完成一個選股系統,得先在選股中心的UI上按新增的ICON,接著就會跳出以下的畫面

選股步驟

依序填好選股策略名稱及選股範圍之後,XS的選股中心一共提供了四種的選股條件產生方式

  1. 系統內建的條列式選股條件,使用者只要調整參數即可
  2. 系統內建的排行規則,使用者也只要調整參數即可
  3. 使用者可以自行透過編輯器撰寫的選股腳本,系統會把符合腳本條件的股票,再跟其他條件一起透過AND 或OR的關連來篩選股票
  4. 使用者可以自行透過編輯器撰寫選股函數,再透過自訂排行條件的功能,自建一個排行規則。

XS選股平台為何會提供這麼多種選股條件的產生方式呢? 這是因為,在制定選股條件時,有時必須某值超過某絕對值,例如EPS要超過兩元,但有時只需要在所有股票裡排在前面即可,例如外資一個月的買超累計排名前30名,所以必須分成絕對值的篩選及排行的篩選,而系統內建的條件不見得能滿足使用者的想法,所以才會再提供讓使用者可以透過編輯器自行撰寫選股及排行條件的功能。

以上圖CANSLIM的條件為例

總市值小於300億這個條件系統有內建,我們直接從”選股條件”這個頁籤裡,找出總市值這個欄位,就會找到這個選股條件,把參數填上 3 00,再如上圖的按加號即可以把這個條件加入選股系統中

接下來使用系統內建的排行規則,可以找到年漲跌幅排在前510名的股票。

接著要找出最近兩季EPS平均年增率排在前面的股票,要怎麼挑呢?

首先我們先寫一個函數來計算出最近兩季EPS平均年增率這個值,寫法如下

value1=GetField("每股稅後淨利(元)","Q");
value2=(value1/value1[4]-1)*100;//年增率
value3=(value2+value2[1])/2;
ret=value3;

然後從選股中心裡開啟一個新的選股條件,然後用自訂排行條件這個功能,分別設定這兩個函數計算結果的排行榜,例如都取前一百名,然後透過and這個條件,就可以挑出符合兩個條件排行前一百名的股票。

 

最後是在股價面上,如果要符合CANSLIM的標準,必須符合兩個條件

1.股價創一年新高。

2.大盤在多頭。

符合上述兩個條件的警示腳本如下:

if high=highest(high,200)
and GetSymbolField("tse.tw","收盤價")>
average(GetSymbolField("tse.tw","收盤價"),20)
then ret=1;

這是股價創兩百日新高且加權指數在月線之上。

綜合以上的選股及警示腳本,就可以完成私房版的CANSLIM交易策略,而這當中的選股方法,我們用到了系統內建的條列式選股條件,也用到了系統內建的排行榜,用了一個自己寫的選股腳本,也用了一個自訂的函數來作排行,這是XS選股平台所提供的四種不同的選股條件產生方式,再搭配上AND與OR的串接,來努力把user的選股思維化成一個電腦可以自動執行的對應程式。這應該是XS選股平台跟坊間其他產品最大的不同吧。

 

打造專屬的當沖操盤室

網友問我有沒有不錯的當沖策略,老實說,我試到現在,還真沒有一個策略可以一直賺錢。所以我想直接跟大家完整報告我的做法,如果各位不嫌棄,可以用這樣的作法,打造自己專屬的當沖操盤室。

首先 ,我把整個操作的架構畫成以下這張圖

當沖架構圖

我的當沖流程一共分成四個步驟

步驟一:  先透過選股腳本,每天回家後跑出一份可以作多的股票清單跟一份作空的股票清單,作空的清單比較簡單: 就一個選股法: 不大賺錢的大型股,因為這種股票大盤跌的時候比較不會有人去買,順勢而下的機率很大,我習慣作空時就空這一類的股票。我設的條件有兩個

1.最新股本大於50億元

2.連續五年EPS都小於0.5元

至於作多的選股條件就比較多樣化,包括籌碼面的,基本面的,基本上就是那些市場認同度較高,會有人照顧的中小型股。

步驟二: 決定多空比例。  除非進入主跌段,不然多頭訊號出現的股票我還是會挑出一些來先買後賣,比例基本上就是盤整或看不懂時,多空各五成,主跌段時不作多單,其餘時間點就看大盤位於那個階段來調整多空比例

步驟三: 把多空選股出來的清單去跑各種盤中的Sensor

這些senosr其實不少都是雲端策略提供的,他的目的是從上面那些股票中找出今天價量異常,波動性可能會比較大的。

步驟四: 再把步驟三跳出來的股票去用個股儀表板檢視,以當沖作多為例,目的在於看看這些股票近期是否買進訊號連發,因為如果是的話,代表作多贏的機率會大一些,這是有點長線保護短線的概念。

透過這四個步驟,我如果有空看盤就作一下,如果沒空看盤就算了。

接下來跟大家介紹這四個步驟在XQ上如何自設看盤的畫面

首先,先把要當沖作多的股票 清單及作空的股票清單都設成一組每天會依選股條件更新的自選股,以作多為例,我設了一個選股條件叫作當沖作多股,條件如下圖的右上方,今天挑出了共176檔

作多選股

然後按下”每日自動執行”的icon,系統就會自動每天把符合條件的股票,存成一組叫”當沖作多股”的自選股。

 

接下來,打開策略雷達,把盤中要跑的sensor,用這組”當沖作多股”去跑,例如下圖我用階梯式上漲這個策略雷達,在執行商品的地方就選組合,然後在 自動選股清單中找到當沖作多股後按完成即可把這個策略只跑符合上述選股條件的股票。

策略雷達

並且設定成每天固定時間會跑的排程(如下圖)

 

排程

按照上述的作法,把每個盤中要跑的雷達都設好排程

完整排程

完成以上的步驟,就可以讓系統在盤中把符合策略雷達的當沖標的呈現在警示中心這個mode裡。

但要把警示中心這個mode跟個股儀表板整合在一起,需要用到自訂頁面的功能

首先,在XQ的Menu的最左邊檔案裡選”開啟新頁” ,接著按建立空白頁面的icon,然後依您的想法切割畫面,警示中心是在即時監控這個mode,我設計的看盤畫面如下

當沖看盤室

左上方是根據上述的步驟,每天符合策略雷達時盤中會跑出來的標的,左下方是該股的分時圖,右上方是個股儀表板,右下方是大盤的分時圖

左邊出訊號,右邊check是不是值得追。

以上是我當沖交易的作法,給各位參考,至於怎麼選出當沖作多的股票,怎麼設策略雷達,怎麼設個股儀表板,每個人的想法不見得一樣,就看各位發揮巧思了。

 

 

 

在K線圖上標進出場點

在K線上標出進出場點,是不少網友希望可以學起來的技能,今天就以創N日新高及創N日新低作為進出場點,來跟大家作示範

首先,要在K線上標示進出場點,要用的是自訂指標的功能,所以先在XScript編輯器,新增一個自訂指標的腳本,然後開始撰寫如下的腳本

input:n(20,"期別");

//設定進場點標示的位置
switch(close)
begin
case >150: value5=low*0.9;
case <50 : value5=low*0.98;
default: value5=low*0.95;
end;

//設定出場點標示的位置
switch(close)
begin
case >150: value6=high*1.1;
case <50 : value6=high*1.02;
default: value6=high*1.05;
end;

if close=highest(close,n)
and barslast(close=highest(close,n))[1]>=20
//上一個創n日新高的進場點在20天以前
then plot1(value5);
if close=lowest(close,n)
and barslast(close=lowest(close,n))[1]>=20
then plot2(value6);

在這個腳本裡用到barslast這個函數,這是用來限定顯出進出場訊號時,過濾掉在短期內不斷重覆的訊號。

接下來就開始在K線圖上點滑鼠右鍵,選”設定”這個功能,然後選擇主圖重疊的頁籤,在視窗中設定如下圖

2017120503

先從左邊的腳本清單中把上面寫的這個腳本加到右欄中,然後點選繪圖樣式這個頁籤,把”型式”從下拉選單中選成”點”,然後再點選”樣式”,從圖示中挑出您要標示的進出場點符號,並且選擇符號的大小,最後按確認即可。

畫出來的圖如下

2017120504

學會了這個技巧,未來不管因為什麼原因加入觀察名單的股票,都可以用自選股與K線圖連動的方式來一檔一檔檢視其進出場的點位

 

學程式交易語法的終南捷徑

隨著當沖交易佔成交量比重的節節高昇,愈來愈多的交易者試著透過程式交易來賺取電光火石間的差價,但在學會基本的變數,參數等概念之後,往往不知從何開始寫出第一個自己的程式,人家說從無到有很難,從模仿中創新比較容易,所以XS的編輯器裡有內容大量的參考腳本,透過複製,貼上就可以有大量的腳本可以開始修改成自己的交易策略。

包括指標,選股,警示,函數,都有大量的內建腳本可以供參考,這些腳本都放在編輯器左欄”系統”這個目錄底下(如下圖)

腳本樣本區

並且根據腳本的屬性分門別類的放在不同的子目錄底下

腳本目錄

例如以目前最紅的當沖策略來說,在編輯器左欄上方點選”警示”這個頁籤,出現上圖最左邊的樹狀子目錄時,按下當沖交易型這個子目錄,就會出現像下圖這樣所有32個當沖交易的參考腳本都會列出來,看上那一個,快點兩下,腳本就會呈現在編輯區裡了

當沖腳本

接下來在編輯的選項裡選”全選” ,”複製”,”貼上”就可以把這個腳本貼到自己新增的腳本裡,然後就可以隨您修改了。

模仿是創新的開始,有現成的程式碼可以參考,千萬別客氣。

 

關於跳空的三個策略

初學程式交易時,寫不了浩然壯闊的大作,僅能用開,高,低,收,成交量這五個欄位,東拼西湊,期能有所收穫。彼時,光跳空相關的策略,就寫了不少,自己覺得效果不錯的,有三個,今天就來跟大家介紹這三個跟跳空有關的策略。

第一個策略叫跳空後的補空,概念如下

1.前一日跳空上漲2%以上

2.今天補空2%以上

3.100日均量超過500張

腳本如下:

if open[1]>close[2]*1.02
and open[1]=low[1]
//前一日跳空
then begin
if close*1.02<=open[1]
//補空2%
and average(volume,100)>500
then ret=1;
end;

 

第二個策略是加速趕底式的跳空

條件如下

1.前20個交易日下跌超過一成

2.前一日下跌

3.開盤跳空重挫5%

腳本

if close[1]<close[2]
and open*1.05<close[1]
and close[20]>close*1.1
then ret=1;

第三個策略是個股隨大盤跳空大跌

條件如下

1.前一日下跌

2.開盤跳空大跌超過5%

3.當天大盤也跳空下跌

腳本
if close[1]<close[2]
and open*1.05<close[1]
and GetSymbolField(“tse.tw”,”開盤價”)
<GetSymbolField(“tse.tw”,”收盤價”)[1]
then ret=1;

 

這三個跳空的腳本,寫起來都很短 ,介紹給大家。

開發彼此無相關的複合策略

書上市後,好像在辦人生交友回顧會,以前的老戰友看完書,考了我一題: 你覺得用技術面,籌碼面,還是基本面寫交易策略比較有用?? 是用1分鐘線有用?還是日線有用? 還是從頭到尾用週線就好?(老戰友是週線應用天王),我的腦海裡想起一首伍佰的歌:”台灣製造”,裡頭有一句歌詞叫作

“攏乎咱摻摻做伙”

摻摻作伙

沒錯,根據機率學,如果彼此沒什麼相關性的交易策略,都出現買進訊號,那麼這時候進場買進的勝率,應該要更高才對。

以昨天的雲端策略中心出的訊號為例

3317

昨天一開盤,多次到頂而破這個從技術面出發的策略,出了好幾個訊號,但只有尼克森也同時符合主力默默收集籌碼後攻堅這個籌碼面的交易策略,結果尼克森是所有昨天多次到頂而破跳出來的股票裡,走勢最強的。

再例如,我之前就有聽說過,有個老師最拿手的一招,就是挑出主力買超且BBand出現買進訊號的股票。

我單獨寫了一個bband的進場腳本

setbackbar(20);
input:length(20);
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 2);
down1 = bollingerband(Close, Length, -2 );
mid1 = (up1 + down1) / 2;

bbandwidth = 100 * (up1 - down1) / mid1;

if linearregslope(up1,10)[1]<0
and linearregslope(down1,10)[1]>0
and bbandwidth[1]*1.1<average(bbandwidth,20)[1]
and close crosses over mid1
and close crosses over highest(high[1],2)
then ret=1;

用這腳本去跑過去一年的所有股票,回測報告如下,

112101

勝率是48.21%,如果我加上主力前一日買超大於800張這樣的籌碼面條件,腳本如下

condition1=false;
condition2=false;

setbackbar(20);
input:length(20);
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 2);
down1 = bollingerband(Close, Length, -2 );
mid1 = (up1 + down1) / 2;

bbandwidth = 100 * (up1 - down1) / mid1;

if linearregslope(up1,10)[1]<0
and linearregslope(down1,10)[1]>0
and bbandwidth[1]*1.1<average(bbandwidth,20)[1]
and close crosses over mid1
and close crosses over highest(high[1],2)
then condition1=true;

value1=GetField("主力買賣超張數");
if value1[1]>800
and volume>=average(volume,20)*1.3
then condition2=true;
if condition1 and condition2 then ret=1;

這時同區間回測出來的交易次數只剩下11次,但其中8次賺錢,勝率超過72%

112102

這一年的數據來看,BBAND的買進訊號,如果考慮到前一晚主力有大買超,勝率會比較高。不過這個策略如果回測的時間拉長,其實勝率也就五成上下,應該是沒有市場傳的那麼神勇。這也是自己寫腳本自己回測的好處,任何聽到的策略,都可以實地測看看。

如果要說技術面與籌碼面整合的不錯的交易策略,小弟倒是可以提供一個,先來看腳本

//全部股票,出場設20天
input:period(20);
value1=GetField("分公司賣出家數")[1];
value2=GetField("分公司買進家數")[1]; 

if linearregslope(value1,period)>0
//賣出的家數愈來愈多
and linearregslope(value2,period)<0
//買進的家數愈來愈少
and
 close*1.05<close[period]
//但這段期間股價在跌
and 
close*1.03<close[1]
//今天又跌超過3%
and close*1.5<close[100]
and tselsindex(10,6)=1
then ret=1;

從這腳本就可以看出,我們是在尋找那種股價在近百日大跌五成但近十日主力卻逆向在收集籌碼的股票,把這個腳本去回測過去五年的所有股票,20天後出場,勝率超過六成,如果持有超過四十天,勝率更超過65%。

大跌後的主力收集回測報告

這個策略是在尋找那些股價大跌後,主力有沒有重新回補的股票,例如下面這張圖

112103

這個策略實際操作起來,是靠大賺來頂勝率沒有非常高的缺點,如果能輔以基本面的研究,過濾那些基本面有疑慮的股票,應該可以做的更好。

以上大致是我摻摻作伙的操作方式,大抵上就是把技術面跟籌碼面的策略一起考慮進來,濾出來的股票再從基本面去double check。

摻摻作伙,我覺得還行,盍興乎來!!