Author Archives: 發財橘子

撰寫高勝率交易策略的五個常用方法

愈來愈多的網友開始使用XS,試著寫出高勝率的交易策略,大家各自有不同的市場觀察心得,所以也有著五花八門的作法,蠻多這行的前輩都教我們,尋找市場裡高機率不斷重覆出現的韻律,是我們制定交易策略的基本原則,這幾年我大約也寫過2000多個交易策略,來跟大家分享一些,寫出高勝率策略的入手方法。

一,大跌就是最大的利多。

我寫過不少大跌後股價變化的腳本,像是

大跌後的低檔五連陽

大跌後的糾結均線突破

我發現,大跌真的是最大的利多,平平是糾結均線突破,大跌後的勝率就是會特別的高

二,籌碼集中發散理論

在所有股市的各種投資理論中,籌碼收集與發散是我很認同的一個理論,實證上,當籌碼一直被收集,甚至就算是當沖交易,大戶買進而散戶賣出的股票,往往也是最強的,我很少看到螞蟻搬大象的劇情真的出現。

三,ROE是很神奇的因子

我寫過很多腳本,用所有普通股去跑,績效平平,但如果只跑ROE好的股票,勝率就拉高不少,投資學上學者非常用力的尋找股價上漲背後的因子,我看過一篇論文,裡頭找出了159種因子,在台股的實證操作上,真的常帶給我驚喜的是ROE這個因子。

四,跟著大股東走

XS裡有不少欄位可以窺探大股東的動向,如關鍵券商,地緣券商,千張大戶等等,我的的確確有感受到,大股東的多空態度是影響股價長線表現的很重要參考指標。畢竟最了解公司的,應該是大股東

五,剛整理完且預估量暴增的強勢股

市場有不少短線大戶是在追逐盤面上出量且表現最強的股票,特別是那些剛整理結束的,我寫過一些腳本來印證這樣的作法到底會不會賺錢?結論是,從這樣的角度出發,在選股上做一些過濾,還真的是會賺錢,這其中最重要的眉角是,最好是挑那些不管法人,實戶,甚至一般投資人都會一擁而上的股票。

 

以上這五個方向,是我到目前為止,寫出最多高勝率腳本的基本精神,分享給大家,祝大家都能找到夠多的好策略。

 

XS上的型態學相關函數

型態分析應該算是股市投資者最耳熟能詳的分析方式,M頭,W底,趨勢線等名稱,大家總能朗朗上口,如何把這些大家都很熟悉的概念,用程式語法表現出來,是本章學習的重點。

所有的型態概念,通常有三個基本元素

  1. 上昇切線
  2. 下降切線
  3. 上昇或下降的角度

透過這三個元素,可以組成各種線段,而型態就是由這些線段所組成。

例如把過去一段時間的走勢分成三個線段,就可以組成如下圖所列出來的不同行情走勢

在語法上,要描敘這些線段,使用的是一個叫作Angle的函數,透過這個函數,只要輸入計算的起始日期及結束日期,就可以算出這段區間的線段上漲或下跌的角度。

它的語法如下:

計算任意二個日期的走勢角度。

回傳數值=Angle(日期1,日期2)

傳入二個參數:
– 第一個參數是日期1。
– 第二個參數是日期2,需大於日期1。

例如要計算最近四期的走勢角度,就可以像下面這麼寫

以下是Angle這個函數的腳本

從腳本中我們可以發現,angle這個值的計算有兩個步驟

第一是先算出斜率_slope

斜率的算法是以最近一期收盤價除以計算起始期的開盤價減一當分子(也就是漲跌幅),以兩個日期的差當分母,然後乘以100。

第二是把斜率用arcTangent函數,把數值轉成角度。

由於arcTangent是利用已知直角三角形的對邊和鄰邊這兩條直角邊的比值求出其夾角大小的函數,用來算對邊與鄰邊值的角度,所以算出來的角度就是這兩個區間的線段的上漲或下跌角度值。

當回傳數值大於0時,代表趨勢向上;當回傳數值小於0時,代表趨勢向下。

回傳值的數值絕對值愈大,代表這個線段的斜率愈陡。

所以運用這樣的概念,可以用語法描述各種型態的轉折,例如要用語法描敘V型反轉,就可以這麼寫

上面這個腳本裡有用到一個函數叫lowestbar,這個函數是用來計算一個區間內的最低點落在第幾根Bar,在描述那些更複雜的型態時,往往需要標示出整個區間的

  1. 最高點
  2. 最高點所在的位置
  3. 最低點
  4. 最低點所在的位置
  5. 第N個高低點
  6. 第N個高低所在的位置
  7. 波段第N個高低點
  8. 波段第N個高低點所在的位置

為了標示出這些位置及價位,系統內建了以下的幾個函數,透過這些函數的應用,可以讓電腦回傳上述八種位置及價位,以利於後續的運算。例如下面這張圖

就需要標出上述的六個點,為了協助使用者能夠在腳本中描繪各種型態,系統支援了描述上述八種位置及數值的相關函數,這些函數分類如下:

函數的寫法,以nthhighest為例:

計算序列資料的第N個極大值
回傳數值=NthHighest(第幾個極大值,數列,期數)
傳入三個參數:
– 第一個參數是要計算極大值的序號。
– 第二個參數是數列,通常是開高低收的價格數列。
– 第三個參數是期數。

以最新一筆資料為基準點,輸入要計算的期數,然後計算過去期數的第N個極大值。

例如,要計算近五期的次高價,就可以這麼寫:

Value1=nthhighest(2,high,5);

這一系列的函數可以協助找出區間的各個高點及低點,以及它們在K棒上的相對位置,可以協助描繪使用者想要尋找的型態。

舉個例子,上面列出來的多頭繼績型態,有個上昇旗型

這個型態的特色是在整理期間還是一峰高過一峰,最後以更陡的漲勢來突破整理,要描述這樣的型態,可以運用上面所提到的nthhighest 及nthhighestbar這兩個函數,參考的腳本如下:

input:period(20,"計算區間");

value2=nthhighest(1,high[1],period);//最高價

value3=nthhighest(2,high[1],period);//第二高價

value4=nthhighest(3,high[1],period);//第三高價

value5=nthhighestbar(1,high[1],period);//最高價距今幾根bar

value6=nthhighestbar(2,high[1],period);//第二高價距今幾根bar

value7=nthhighestbar(3,high[1],period);//第三高價距今幾根bar

if value6-value5>3 and value7-value6>3

  //三個高點沒有連在一起,且是愈來愈高

and maxlist(value2,value3,value4)

<minlist(value2,value3,value4)*1.05

  //三個高點相差不到5%

and close crosses over value2

  //創新高

then ret=1;

這個腳本就可以選出像下面這張圖裡,符合腳本描述型態的股票。

其次,系統也支援幾個可以找出轉折的高點及相對位置,可以使用的函數有以下幾個:

舉Swinghigh為例,其語法如下:

回傳數值=SwingHigh(數列,期數,左肩期數,右肩期數,第幾個高點)

計算數列最近N個的轉折高點數值

傳入五個參數:
– 第一個參數是數列,通常是開高低收的價格數列。
– 第二個參數是要尋找轉折點的樣本期數。
– 第三個參數是高點左側要有幾筆較低的數值。
– 第四個參數是高點右側要有幾筆較低的數值。
– 第五個參數是第幾個高點,依圖表由右往左(時間新到舊),1為最近一次的高點、2為第二近的高點。

若某一筆資料的左右二側數值在指定的期數內都比該筆資料低的話,則定義為轉折高點。

當無法找到對應的轉折高點時,回傳值為-1。

例如想要找出過去20天,第二個左右兩邊都各至少有三天的高點價位,就可以寫成:

value1=swinghigh(high,20,3,3,2);

透過以上這些型態的函數,可以具體的描繪各種型態,找出符合特定型態的股票。

以下是一個多次到頂而破的例子,用到的是 highest及highestbar這兩個函數

 input:HitTimes(4,"設定觸頂次數");
input:RangeRatio(1,"設定頭部區範圍寬度%");
input:Length(40,"計算期數");

if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),10)
then begin
variable: theHigh(0); 

//找到過去其間的最高點
theHigh = Highest(High[1],Length); 
value1=highestbar(high[1],length);

variable: HighLowerBound(0); 

// 設為瓶頸區間上界
HighLowerBound = theHigh *(100-RangeRatio)/100; 

variable: TouchRangeTimes(0); 

//回算在此區間中 進去瓶頸區的次數 
TouchRangeTimes = CountIF(High[1] > HighLowerBound, Length-value1);

Condition1 = TouchRangeTimes >= HitTimes;
Condition2 = close > theHigh;
condition3=close[length]*1.1<thehigh;


Ret = Condition1 and Condition2 and condition3 ;
end;

透過這些型態函數,可以試著描繪出各種不同的型態,程式交易語法的好處就在於,當您把您相信的型態,透過語法完整而清楚的描述之後,就不用每天辛苦地從1500多檔股票的線圖中尋找想要尋找的型態,電腦可以很快的在幾秒到幾分鐘之內挑出這些股票。

 

圖說技術指標的設計方式與背後的思維(五)

在大家常用的技術指標中,布林值算是熱門的指標,像布林值這類從統計學出發的技術指標,蠻值得我們了解背後的設計概念,可以作為我們自訂指標的設計靈感。

關於布林值這個指標的設計概念,以及像變異數,標準差,R平方這些從統計學上所衍生出來的技術指標,我先前有寫過一些文章介紹,相關連結如下

布林通道

R平方

今天要跟大家討論的是,除了把股價拿來作為統計分佈的計算標的,其實透過Getfield語法,我們也可以把其他欄位拿來試看看,今天跟大家舉個例子,我們平常看到個股的外資買賣超時,如果只看絕對值,可能不見得很有感,但如果把布林值這種常態分配的概念放進去,就可以觀察目前的數字在統計學上,是不是已進十分罕見,如果罕見,往往就可能是一個新方向的開始,基於這樣的想法,我寫了一個腳本如下

input: Length(20, "天數"), UpperBand(2, "上"), LowerBand(2, "下"), EMALength(3, "EMA");
variable: up(0), down(0), mid(0), bbandwidth(0), ema(0);
value1=GetField("外資買賣超張數");
up = bollingerband(value1, Length, UpperBand);
down = bollingerband(value1, Length, -1 * LowerBand);
Plot1(value1, "外資買超張數");
Plot2(up, "上限");
plot3(down,"下限");

把這個自訂指標畫成圖,下圖是台積電近期的對照圖

從上面那張圖,我們會發現,空轉多時,容易看到外資買超突破或貼近布林值上限,多轉空時,則是多次跌破布林值下限。

再多看幾張圖

 

有些數據,看絕對值無感,把它透過統計學作點變化,就會比較有感覺

 

 

 

 

 

總市值低於一定標準

有網友在問說能不能知道那些股票的總市值已經低於流動資產,我寫了一個選股腳本來找出這些股票。不過要跟大家提醒的是,從過去回測的數字來看,這種價值型投資方法,在市場大跌時,股價未必能抗跌,只是在多頭市場,確實有不錯的表現,所以大家可以透過這個選股腳本去找出被低估的股票,但進場點還是得等不確定因素結束,然後也不是折價愈大愈好,還是要考慮公司的未來前景及獲利能力。

我寫的腳本如下

value1=GetField("總市值(億)","D");//億元
value2=GetField("流動資產","Q");//百萬
value3=GetField("負債總額","Q");//百萬
value4=GetField("普通股股本","Q");//億元
if value4<>0 then 
value5=((value2-value3)/100-value1)/(value4);
if value5>0 then ret=1;
outputfield(1,value1,0,"總市值億元");
outputfield(2,value2/100,0,"流動資產億元");
outputfield(3,value3/100,0,"負債總額億元");
outputfield(4,value4,0,"股本億元");
outputfield(5,value5*10,2,"每股折價");

以今天的收盤價來跑,符合條件的股票如下

如果拿這腳本去回測到去年底的過去三年,回測報告如下

看得出來是可以比指數好一些,但如果能再搭配其他籌碼或價量的篩選條件應該會更好。

另外就是大盤不好的時候,其實沒有看到很強的抗跌能力

這點是大家需要特別留意的

 

 

圖說技術指標的設計方式與背後的思維(四)

談完趨勢,來談談離趨勢太遠時該怎麼辦?如果我們接受股價是有其趨勢,那麼偏離趨勢太遠,就應該要回到趨勢上來,除非是整個趨勢都要改變了,由這樣的概念所出發的技術指標有兩種,一種是乖離型指標,另一種是震盪型指標。這兩種都有隱含者物極必反的思維。

一,乖離率

乖離率的概念簡單說,就是目前的價格離平均值有多遠,XS裡有一個bias的函數就是用來計算乖離率,它的腳本如下

SetBarMode(1);

// Bias function (for 乖離率相關指標)
//
input: length(numericsimple);

value1 = Average(close, length);
Bias = (close - value1) * 100 / value1;

從程式碼來看,bias就是價格減去平均值當分子再除以平均值,乖離值在零的上下游走,離太遠就是偏離平均值太遠

二,KD值

除了偏離均線算是乖離,另外一種概念叫震盪,它的概念是人們有時太過樂觀,有時又太過悲觀,所以造成股價會上下波動,形成一種像鐘擺一樣的來回震盪走勢,這個概念裡最有名的指標是KD指標,它的計算方式是去找出特定區間內,收盤價與最低價的距離佔區間最高價與最低價間距離的比例,它的計算公式如下,在XS中是把它寫成一個叫Stochastic的函數,函數的腳本如下

input:
length(numericsimple), rsvt(numericsimple), kt(numericsimple),
rsv(numericref), k(numericref), d(numericref);

variable:
maxHigh(0), minLow(0);

maxHigh = Highest(high, length);
//找出波段最高點
minLow = Lowest(low, length);
//找出波段最低點
if maxHigh <> minLow then
rsv = 100 * (close - minLow) / (maxHigh - minLow)
else
rsv = 50;
//定議RSV是收盤價減去波段最低點除以最高點到最低點間的距離
if currentbar = 1 then
begin
k = 50;
d = 50;
end
else
begin
k = (k[1] * (rsvt - 1) + rsv) / rsvt;
//K值是平滑RSV值
d = (d[1] * (kt - 1) + k) / kt;
//D值是K值的平滑值 
end;

stochastic = 1;

一般rsvt常用的是3,也就是平滑的權重是1/3,區間是9,所以如果要寫出9K在低檔與9D黃金交叉的腳本,就可以運用這個stochastic的函數撰寫如下

input: Length(9), RSVt(3), Kt(3);
variable: rsv(0), k(0), _d(0);

SetTotalBar(maxlist(Length,6) * 3);

SetInputName(1, "天數");
SetInputName(2, "RSVt權數");
SetInputName(3, "Kt權數");

Stochastic(Length, RSVt, Kt, rsv, k, _d);

Ret = k crosses above _d;

K值及D值如鐘擺般來回擺動,有著物極必返的概念,是震盪指標的代表

 

以上是物極必反的概念下所衍生的技術指標,我們到現在討論了開高低收相對位置,成交量,趨勢理論及物極必返理論所衍生出來的一些技術指標,大家可以發現,一個技術指標的發明,總是歷經了如下圖的四個階段

我有很多的交易策略,都是透過這樣的方式,找到合用的技術指標,然後在搭配一些選股條件所組合而成,之後會再跟大家繼續介紹一些技術指標的產生過程,幫助大家找出自己滿意的自訂指標。

 

 

 

 

期指當沖交易領先指標的設定方法

連續兩篇都在介紹由權值股的表現,來總合成一個期指多空方向的領先指標,為什麼國際金融情勢地動山搖,而我一直聚焦在介紹期指當沖的領先指標呢? 原因是我也不知道隔天醒來市場會往上噴還是往下掉,但盤中至少這些外在的變數可以直接從盤面的反映而得知,所以我才會聚焦在介紹期指當沖的領先指標上。

繼前兩篇製定指標的方法之後,今天跟大家介紹利用兩個陣列來輸入領先指標成份股及其在計數器上的權重,然後算出加權後的領先指標,以下是程式樣本

給不同成份股不同的權值

array:T50[50](0),W50[50](0),S50[50](0);
t50[1]=GetSymbolField("1101.tw","close");
t50[2]=GetSymbolField("1102.tw","close");
t50[3]=GetSymbolField("1216.tw","close");
t50[4]=GetSymbolField("1301.tw","close");
t50[5]=GetSymbolField("1303.tw","close");
t50[6]=GetSymbolField("1326.tw","close");
t50[7]=GetSymbolField("1402.tw","close");
t50[8]=GetSymbolField("2002.tw","close");
t50[9]=GetSymbolField("2105.tw","close");
t50[10]=GetSymbolField("2227.tw","close");
t50[11]=GetSymbolField("2301.tw","close");
t50[12]=GetSymbolField("2303.tw","close");
t50[13]=GetSymbolField("2308.tw","close");
t50[14]=GetSymbolField("2317.tw","close");
t50[15]=GetSymbolField("2327.tw","close"); 
t50[16]=GetSymbolField("2330.tw","close");
t50[17]=GetSymbolField("2357.tw","close");
t50[18]=GetSymbolField("2382.tw","close");
t50[19]=GetSymbolField("2395.tw","close");
t50[20]=GetSymbolField("2408.tw","close");
t50[21]=GetSymbolField("2412.tw","close");
t50[22]=GetSymbolField("2454.tw","close");
t50[23]=GetSymbolField("2474.tw","close");
t50[24]=GetSymbolField("2633.tw","close");
t50[25]=GetSymbolField("2801.tw","close");
t50[26]=GetSymbolField("2823.tw","close");
t50[27]=GetSymbolField("2880.tw","close");
t50[28]=GetSymbolField("2881.tw","close");
t50[29]=GetSymbolField("2882.tw","close");
t50[30]=GetSymbolField("2883.tw","close");
t50[31]=GetSymbolField("2884.tw","close");
t50[32]=GetSymbolField("2885.tw","close");
t50[33]=GetSymbolField("2886.tw","close");
t50[34]=GetSymbolField("2887.tw","close");
t50[35]=GetSymbolField("2888.tw","close");
t50[36]=GetSymbolField("2890.tw","close");
t50[37]=GetSymbolField("2891.tw","close");
t50[38]=GetSymbolField("2892.tw","close");
t50[39]=GetSymbolField("2912.tw","close");
t50[40]=GetSymbolField("3008.tw","close");
t50[41]=GetSymbolField("3045.tw","close");
t50[42]=GetSymbolField("3711.tw","close");
t50[43]=GetSymbolField("4904.tw","close");
t50[44]=GetSymbolField("4938.tw","close");
t50[45]=GetSymbolField("5871.tw","close");
t50[46]=GetSymbolField("5876.tw","close");
t50[47]=GetSymbolField("5880.tw","close");
t50[48]=GetSymbolField("6505.tw","close");
t50[49]=GetSymbolField("9904.tw","close");
t50[50]=GetSymbolField("9910.tw","close");

W50[1]=1;
W50[2]=1;
W50[3]=1;
W50[4]=1;
W50[5]=1;
W50[6]=1;
W50[7]=1;
W50[8]=1;
W50[9]=1;
W50[10]=1;
W50[11]=1;
W50[12]=1;
W50[13]=1;
W50[14]=2;
W50[15]=1;
W50[16]=3;
W50[17]=1;
W50[18]=1;
W50[19]=1;
W50[20]=1;
W50[21]=1;
W50[22]=1;
W50[23]=1;
W50[24]=1;
W50[25]=1;
W50[26]=1;
W50[27]=1;
W50[28]=1;
W50[29]=1;
W50[30]=1;
W50[31]=1;
W50[32]=1;
W50[33]=1;
W50[34]=1;
W50[35]=1;
W50[36]=1;
W50[37]=1;
W50[38]=1;
W50[39]=1;
W50[40]=1;
W50[41]=1;
W50[42]=1;
W50[43]=1;
W50[44]=1;
W50[45]=1;
W50[46]=1;
W50[47]=1;
W50[48]=1;
W50[49]=1;
W50[50]=1;
variable:count(0),i(0);
count=0;
for i=1 to 50
begin
if t50[i]> t50[i][1]
then count=count+W50[i];
end;
value1=average(count,10);
plot1(value1);

這個腳本是用第二個陣列來輸入權重,大家可以自己嚐試看看不同的權重是否各具備領先的效果。

下面是我做的加權領先指標跟加權指數一分鐘線的對照圖

請跟前面兩個指標一起對照著看,看看是否可以掌握加權指數盤中的轉折點

 

期指盤中領先指標的另一個寫法

昨天跟大家介紹在盤中透過權值股的股價變化來預測期指的走向,當時我有提到可以透過調整成份股,調整計數標準及調整權重等三個方法來打造期指的領先指標,今天來跟大家介紹的是透過調整計數標準的方法。對於以當沖期指為操作方法的朋友,我真的非常建議各位學會這些方法,以權值股的股價表現來預測期指未來走向,是我個人覺得非常值得研究及開發程式的領域,因為從實戰上來看,這在有行情的時候,真的是一個不錯的參考依據。

上一篇是來計算有多少檔權值股站在10分鐘均線之上,這一篇則是介紹改成計算有多少檔分鐘線是上漲的,然後把這個數字算出十期的移動平均,這樣可以看出權值股上漲下跌的主流趨勢。

這個腳本如下

array:T50[50](0);
t50[1]=GetSymbolField("5876.tw","close");
t50[2]=GetSymbolField("2317.tw","close");
t50[3]=GetSymbolField("2412.tw","close");
t50[4]=GetSymbolField("1301.tw","close");
t50[5]=GetSymbolField("1303.tw","close");
t50[6]=GetSymbolField("2454.tw","close");
t50[7]=GetSymbolField("1326.tw","close");
t50[8]=GetSymbolField("2308.tw","close");
t50[9]=GetSymbolField("2882.tw","close");
t50[10]=GetSymbolField("2881.tw","close");
t50[11]=GetSymbolField("2891.tw","close");
t50[12]=GetSymbolField("2002.tw","close");
t50[13]=GetSymbolField("1216.tw","close");
t50[14]=GetSymbolField("3008.tw","close");
t50[15]=GetSymbolField("2886.tw","close");
t50[16]=GetSymbolField("3711.tw","close");
t50[17]=GetSymbolField("2357.tw","close");
t50[18]=GetSymbolField("2474.tw","close");
t50[19]=GetSymbolField("3045.tw","close");
t50[20]=GetSymbolField("6505.tw","close");
t50[21]=GetSymbolField("2303.tw","close");
t50[22]=GetSymbolField("2382.tw","close");
t50[23]=GetSymbolField("2207.tw","close");
t50[24]=GetSymbolField("2892.tw","close");
t50[25]=GetSymbolField("4938.tw","close");
t50[26]=GetSymbolField("2884.tw","close");
t50[27]=GetSymbolField("2912.tw","close");
t50[28]=GetSymbolField("2885.tw","close");
t50[29]=GetSymbolField("2883.tw","close");
t50[30]=GetSymbolField("2105.tw","close");
t50[31]=GetSymbolField("2880.tw","close");
t50[32]=GetSymbolField("2330.tw","close");
t50[33]=GetSymbolField("4904.tw","close");
t50[34]=GetSymbolField("5880.tw","close");
t50[35]=GetSymbolField("2823.tw","close");
t50[36]=GetSymbolField("9904.tw","close");
t50[37]=GetSymbolField("1402.tw","close");
t50[38]=GetSymbolField("1101.tw","close");
t50[39]=GetSymbolField("2887.tw","close");
t50[40]=GetSymbolField("2890.tw","close");
t50[41]=GetSymbolField("2801.tw","close");
t50[42]=GetSymbolField("2633.tw","close");
t50[43]=GetSymbolField("5871.tw","close");
t50[44]=GetSymbolField("2301.tw","close");
t50[45]=GetSymbolField("2395.tw","close");
t50[46]=GetSymbolField("2354.tw","close");
t50[47]=GetSymbolField("9904.tw","close");
t50[48]=GetSymbolField("1102.tw","close");
t50[49]=GetSymbolField("2408.tw","close");
t50[50]=GetSymbolField("2227.tw","close"); 
variable:count(0),i(0);
count=0;
for i=1 to 50
begin
if t50[i]> t50[i][1]
then count=count+1;
end;
value1=average(count,10);
plot1(value1);

用這個指標跟加權指數的對照圖如下

各位可以發現,指數小跌,而下跌的權值股愈來愈多時,後市下跌的機率就變大,相反的,指數不大動,但上漲的權值股家數愈來愈多,後市看漲的機率就變大。

再跟大家嘮叨一次,人的肉眼無法一次盯住50檔或更多的個股,但期指的表現是由成份股的股價表現所組合而成的,我們可以讓電腦一次幫我們盯住所有成份股的表現,然後形成一個總合性的數據,把這個數據變成一個指標,盯住幾個指標,絕對是我們用肉眼可以做的到的,如果你有志於把期指盤中操作當成一種謀生方式,這個方法絕對值得您學起來。

 

 

如何打造盤中即時多空指標?

這陣子大盤每天震盪幅度都頗大,期指如果站對邊,頗為有利可圖,那麼如何預判指數接下來的多空方向,就是一門有利可圖的學問,那怕只比別人早幾分鐘,在波動大的時候,仍然可以賺到錢,今天這一篇來介紹如何運用XS的語法,統合權值股分鐘線多空方向,打造盤中即時多空指標,來預判加權指數的後市。

先來看一下這個指標跟1分鐘加權指數的對照圖

大家可以發現,這個指標在加權指數一分鐘線多空翻轉時,的確可以具備領先的預示能力,特別是盤中的一分鐘線多空轉折點前後,這個指標的訊號是非常明確的。

這個指標的作法是,把佔指數較大的前50檔股票,去計算目前最新價格是在10分鐘移動平均線之上還是之下,在其上就加一,在其下就加0

如果多空勢均力敵,這數字減去25就應該是0,如果在均線之上的股票數愈多,那代表多頭勢力在增強,如果跌到0以下,代表大多數的權值股,目前跌破十分鐘線。

我把這個腳本放在下面給大家參考

array:T50[50](0);
t50[1]=GetSymbolField("5876.tw","close");
t50[2]=GetSymbolField("2317.tw","close");
t50[3]=GetSymbolField("2412.tw","close");
t50[4]=GetSymbolField("1301.tw","close");
t50[5]=GetSymbolField("1303.tw","close");
t50[6]=GetSymbolField("2454.tw","close");
t50[7]=GetSymbolField("1326.tw","close");
t50[8]=GetSymbolField("2308.tw","close");
t50[9]=GetSymbolField("2882.tw","close");
t50[10]=GetSymbolField("2881.tw","close");
t50[11]=GetSymbolField("2891.tw","close");
t50[12]=GetSymbolField("2002.tw","close");
t50[13]=GetSymbolField("1216.tw","close");
t50[14]=GetSymbolField("3008.tw","close");
t50[15]=GetSymbolField("2886.tw","close");
t50[16]=GetSymbolField("3711.tw","close");
t50[17]=GetSymbolField("2357.tw","close");
t50[18]=GetSymbolField("2474.tw","close");
t50[19]=GetSymbolField("3045.tw","close");
t50[20]=GetSymbolField("6505.tw","close");
t50[21]=GetSymbolField("2303.tw","close");
t50[22]=GetSymbolField("2382.tw","close");
t50[23]=GetSymbolField("2207.tw","close");
t50[24]=GetSymbolField("2892.tw","close");
t50[25]=GetSymbolField("4938.tw","close");
t50[26]=GetSymbolField("2884.tw","close");
t50[27]=GetSymbolField("2912.tw","close");
t50[28]=GetSymbolField("2885.tw","close");
t50[29]=GetSymbolField("2883.tw","close");
t50[30]=GetSymbolField("2105.tw","close");
t50[31]=GetSymbolField("2880.tw","close");
t50[32]=GetSymbolField("2330.tw","close");
t50[33]=GetSymbolField("4904.tw","close");
t50[34]=GetSymbolField("5880.tw","close");
t50[35]=GetSymbolField("2481.tw","close");
t50[36]=GetSymbolField("9904.tw","close");
t50[37]=GetSymbolField("1402.tw","close");
t50[38]=GetSymbolField("1101.tw","close");
t50[39]=GetSymbolField("2887.tw","close");
t50[40]=GetSymbolField("2890.tw","close");
t50[41]=GetSymbolField("2801.tw","close");
t50[42]=GetSymbolField("1476.tw","close");
t50[43]=GetSymbolField("2409.tw","close");
t50[44]=GetSymbolField("2301.tw","close");
t50[45]=GetSymbolField("2395.tw","close");
t50[46]=GetSymbolField("2354.tw","close");
t50[47]=GetSymbolField("9904.tw","close");
t50[48]=GetSymbolField("1102.tw","close");
t50[49]=GetSymbolField("2408.tw","close");
t50[50]=GetSymbolField("2227.tw","close"); 
variable:count(0),i(0);
count=0;
for i=1 to 50
begin
if t50[i] > average(t50[i],10)
then count=count+1;
end;
plot1(count-25);

大家可以試著調整成份股,讓這指標更具備領先預測的能力,也可以訂定不同的計數標準,也可以給予不同股票不同的計算權重,這三個方向都是可以自創出領先指標的可行方法。

這種透過盤中的個股表現,來研判指數的方向,我自己以前用excel表有做了不少個,實戰上有其效果,把它改成XS指標, 可以多個指標一起看,效果不錯,推荐給大家。

 

全球最新金融數據匯整

昨晚全球金融市場有很大的波動,我利用XQ全球贏家,跟大家報告一些我會留意的金融數據。

先來看道瓊指數

日線圖如下

月線如下

成份股昨天跌幅排序

重災區是石油業及金融業,醫療保健及製藥業較抗跌。

科技股方面,費城半導體指數成份股的跌幅排行如下

半導體跟全球景氣連動很強,這種跌法反映了市場對全球景氣前景的負向預期,顯示恐慌氣氛漫延

接下來我們來看S&P500的跌幅排行

拖累美股的是石油相關產業

回頭來看跟我們較息息相關的Nasdaq 指數成份股

只有像好市多及Ebay這一類較抗跌。

所以我們約莫可以研判,大跌的重心在於油價重挫對能源業者的衝撃 ,以及市場對全球景氣的悲觀氣氛 ,對跨國性企業獲利所帶來的疑慮 ,這其中當然也包括對金融業者獲利的擔憂。

在全球匯市方面,日圓升值的幅度非常大

當初低利借日圓換成美元賺利差的套利行為,在FED用力降息之後,必須開始把美元換回日圓。

接下來我們透過道瓊產業指數來看看昨天各產業的股價表現

石油相關產業跌幅兩成最重,海運業,銀行業,壽險業,汽車業,娛樂業等也是跌的比較重的。

這陣子表現最好的是公債市場,但昨天大漲後又拉回 ,顯示債券市場有獲利了結的情況

債信比公債略低的投資等級公司債,昨天獲利了結的情況更為明顯

高收債是固定收益商品裡頭,表現最差的,因為持有不少能源產業的公司債,所以跌幅不小

從債券市場的表現來看,市場因為肺炎疫情擴大到歐美,開始擔心影響到企業未來的獲利及償債能力,因此雖然FED降息且油價下跌,但債券市場的高收益債ETF還是被嚴重贖回,導致ETF價格大跌,連投資等級公司債,這種獲利了結的現象都普遍存在。

另外,作為亂市英雄的黃金,前幾日有表現,但昨天也是重挫,資金並沒有大量流向黃金。

 

整體來看,目前市場充滿了退場觀看,現金為王的心態,以上是我從昨天各市場表現看到的情況,供大家參考,接下來市場的觀察重心應該會放在俄羅斯與沙烏地阿拉伯何時對於石油減產有共識,油價止跌,以及疫情是否可以在歐美被控制住,把對景氣前景的衝撃降到最低。

最近有不少朋友詢問XQ美股即時報價要如何取得?

有兩個方案

一個是直接線上申購美股即時報價的權限

購買的價格與介紹如連結

另一個方法是加入人人都是巴菲特這個方案,到與XQ合作的券商開戶及下單,就可以取得即時報價的權限

 

 

 

 

 

 

 

 

 

 

 

圖說技術指標的設計方式與背後的思維(三)

在討論過用開高低收成交量所衍生出來的各種技術指標之後,今天我們來討論趨勢型指標的思維與設計方式。

趨勢型技術指標在市場上被廣泛使用,像移動平均線,MACD等等大家耳熟能詳的技術指標都屬於趨勢指標。

趨勢指標最早被當成一個主流派別,應該是來自鼎鼎大名的道氏理論,道氏理論的核心是因為投資人趨吉避凶的心理,且具有心理學上的增強效應,市場會在沿著主要趨勢波動,我們可以透過股價的波動方向,來判斷市場的多空趨勢。

基於這樣的理論,技術分析者使用移動平均線等等的指標,來更清晰的觀察市場的主要趨勢。

最常被使用到的,是以下幾個指標

一,移動平均線

一般的移動平均線,就是把平均線期別裡的每個收盤價加總起來除以天期,XS裡的average函數就是這麼算的,腳本如下

SetBarMode(1);

input:thePrice(numericseries); //"價格序列"
input:Length(numericsimple); //"計算期間"

if Length > 0 then
Average = Summation(thePrice, Length) / Length
else 
Average =0;

因為是這麼計算出來的,所以很多分析師會用平均成本來介紹移動平均線,如果不同天期的移動平均線糾在在一起,我們會說短中長期的持股者的平均成本都差不多。

二,加權移動平均線

簡單的移動平均線最常被垢病的,是把過去的價格跟現在的價格視為一樣重要,這樣在價格波動時,可能反應不夠靈敏,所以有人主張,應該不能用簡單平均,要用加權平均來算移動平均線,給予最新的價格較高的權重。XS裡有一個函數Xaverage就是這樣的作法。

SetBarMode(2);

input:thePrice(numericseries); //"價格序列"
input:Length(Numeric); //"計算期間"

variable: Factor(0);

if length + 1 = 0 then Factor = 1 else Factor = 2 / (Length + 1);

if CurrentBar = 1 then
XAverage = thePrice
else
XAverage = XAverage[1] + Factor * (thePrice - XAverage[1]);

這樣的作法大家在自訂指標時可以拿來用,其中的Factor要怎麼訂,也是可以多方嚐試的。非常有名的MACD就是一個運用加權移動平均方法計算出來的指標。

三,MACD

我們先來看看這個指標的函數計算方式

SetBarMode(1);

// MACD function
// Input: Price序列, FastLength, SlowLength, MACDLength
// Output: DifValue, MACDValue, OscValue
// 
Input: Price(numericseries), FastLength(numericsimple), SlowLength(numericsimple), MACDLength(numericsimple);
Input: DifValue(numericref), MACDValue(numericref), OscValue(numericref);

DifValue = XAverage(price, FastLength) - XAverage(price, SlowLength);
MACDValue = XAverage(DifValue, MACDLength) ;
OscValue = DifValue - MACDValue;

從上面的腳本可以發現,MACD是把不同天期的加權移動平均線相減後再作一次加權移動平均。

以下圖為例,市場最常用的MACD參數是12,26,9

也就是計算12日的加權移動平均,26日的加權移動平均,然後前者減後者之後再計算九日的加權移動平均

四,TRIX三重指數平滑移動平均標

如果要說把加權移動平均的概念運用的最到位的,TRIX指標應該是其中一個,它的計算公式如下

Input: price(numericseries), length(numericsimple);

value1 = XAverage(price, length);
value2 = XAverage(value1, length);
value3 = XAverage(value2, length);
	
if CurrentBar = 1 then
	TRIX = 0
else
begin
    if value3[1] <> 0 then
        TRIX = (value3 - value3[1]) / value3[1]
    else
        TRIX = 0;
end;

可以看得出來,它是把股價,用同一期別,加權移動平均線計算了三次,所以會成為很平滑的線,以下圖為例,就是畫出9天跟15天的TRIX,線圖都非常的平滑,大方向也看的很清楚

今天跟大家介紹的是利用移動平均與加權移動平均的算法來掌握股價的大趨勢,運用這個方法來發展的自訂指標有非常的多,大家可以自己來試看看。