Author Archives: 發財橘子

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

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

關於布林值這個指標的設計概念,以及像變異數,標準差,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,"下限");

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

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

再多看幾張圖

 

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

 

xqlite banner

 

 

 

 

總市值低於一定標準

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

我寫的腳本如下

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,"每股折價");

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

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

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

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

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

 

xqlite banner

 

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

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

一,乖離率

乖離率的概念簡單說,就是目前的價格離平均值有多遠,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值如鐘擺般來回擺動,有著物極必返的概念,是震盪指標的代表

 

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

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

 

xqlite banner

 

 

 

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

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

上一篇是來計算有多少檔權值股站在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檔或更多的個股,但期指的表現是由成份股的股價表現所組合而成的,我們可以讓電腦一次幫我們盯住所有成份股的表現,然後形成一個總合性的數據,把這個數據變成一個指標,盯住幾個指標,絕對是我們用肉眼可以做的到的,如果你有志於把期指盤中操作當成一種謀生方式,這個方法絕對值得您學起來。

 

xqlite banner

 

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

這陣子大盤每天震盪幅度都頗大,期指如果站對邊,頗為有利可圖,那麼如何預判指數接下來的多空方向,就是一門有利可圖的學問,那怕只比別人早幾分鐘,在波動大的時候,仍然可以賺到錢,今天這一篇來介紹如何運用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指標, 可以多個指標一起看,效果不錯,推荐給大家。

xqlite banner

 

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

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

趨勢型技術指標在市場上被廣泛使用,像移動平均線,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,線圖都非常的平滑,大方向也看的很清楚

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

 

xqlite banner

 

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

前一篇提到透過最近兩根開高低收8個值來設計技術指標,今天延續前一篇的概念,但是把成交量這個元素也加進來,來介紹這八個值加上成交量所發展出來的技術指標。

提到成交量,大家最耳熟能詳的應該是能量潮OBV指標,這指標的腳本如下

variable: obvolume(0);

if CurrentBar = 1 then
	obvolume = 0
else
  begin	
	if close > close[1] then
		obvolume = obvolume[1] + volume
	else
	  begin
		if close < close[1] then
			obvolume = obvolume[1] - volume
		else
			obvolume = obvolume[1];
	  end;		
  end;
  
Plot1(obvolume, "OBV");

這裡是用到昨天跟今天的收盤價,然後再把成交量加進來運算。

另外一個把各價位跟成交量結合的技術指標叫作Chaikin Money Flow,它的腳本如下

variable:ad(0),chai(0);
if h-l<> 0 then 
ad=((c-l)-(h-c))/(h-l)*volume;
input:length(5);
value1=summation(ad,length);
value2=summation(volume,length);
if value2<>0 then 
chai=value1/value2;
plot1(chai);

這個指標是把收盤價-最低價與最高價-收盤價相減去除以最高價與最低價的差,然後再乘以當根的成交量,作加總,再去除以區間的成交量,從計算公式來看,這個指標可以掌握當根K棒中多空力量是那一邊佔上風,下圖是台積電的對照圖,我們可以從圖中了解到多空力道的轉折點,以及盤整時,真實的多空力道是那一邊佔上風。

這個指標重視的是當根K棒的多空力道變化,但沒有考慮到前後根K棒價格的變化,有另一個技術指標Money Flow Index則是把成交量跟前後根的變化一起考量,這個指標的計算腳本如下

Input: Length(6);
variable: tp(0), tv(0), utv(0), dtv(0), pmf(0), nmf(0), mfivalue(0);

SetInputName(1, "天數");

tp = TypicalPrice;
tv = tp * Volume;

if tp > tp[1] then
begin
utv = tv;
dtv = 0;
end
else
begin
utv = 0;
dtv = tv;
end;

pmf = Average(utv, MinList(CurrentBar, length));
nmf = Average(dtv, MinList(CurrentBar, length));


if CurrentBar < Length or (pmf + nmf) = 0 then
mfivalue = 50
else 
mfivalue = 100 * pmf /(pmf + nmf);

Plot1(mfivalue, "MFI");

它是先把收盤價+最高價+最低價除以三,計算出一個中價(typicalprice),然後把中價乘以成交量,然後再視中價與前一根中價的價差,然決定中價乘以成交量是要視為上漲量還是下跌量

然後再計算上漲量與下跌量的移動平均,最後計算上漲量的移動平均值佔整體的比例,下圖是台積電的MFI對照圖

這是一個以50為多空分界的指標。

 

當我們在自訂指標的時候,把最近兩根的成交量跟開高低收共十個值來做運算,的確可以衍生出各種的技術指標,當我們了解背後代表的意義,就可以把不同的指標一起整合成一個交易策略,如果只是拿現成的指標人云亦云的使用,那麼就不具備了資訊領先的優勢。

 

之後我會繼續跟大家進一步分享其他的技術分析指標設計的背後概念。

 

xqlite banner

 

 

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

技術分析分成很多派別,背後各有其思想基礎,近來用XS想要發展一些自訂指標,來建構自己的技術分析體系,所以作了不少的嚐試,這系列是來跟大家分享我的心路歷程

今天先來跟大家介紹的,是技術指標發明者 ,如何透過單根K棒裡,開高低收的四個相對位置,來偵測多空雙方的力道拉扯。

就像下面這張圖

我們可以把當根K線的開高低收四個點位,配合前一根的開高低收,定義出各式各樣的多空數據

例如,累積/派發線這個技術指標,就認為

一,收盤價-最低價: 當根K棒裡,多頭的淨力道

二,最高價-收價盤:當根K棒裡,空頭的淨力道

三,最高價-最低價:當根K棒裡,多空爭戰的整個戰場區域

所以當天的淨多空力道比例是((收盤價-最低價)-(最高價-收盤價))/(最高價-最低價)

所以累積/派發線指標的腳本就可以撰寫如下

VAR:ADL(0);
if currentbar=1 then 
adl=((close-low)-(high-close))/(high-low)*volume
else if high<>low then 
adl=adl[1]+((close-low)-(high-close))/(high-low)*volume
else 
adl=adl[1]+((close/close[1])-1)*volume;
plot1(adl,"累積派發線");

用這個指標畫成的圖就如下圖

類似的作法,也出現在大家常用的DMI指標上。

如上圖,DMI指標的計算,是先定義了三個數值

一,Truerange真實波動區間,如上圖右邊的概念,代表了當根K棒跟前一根之間最大的波動區間。

二,+DM : 如上圖左邊,如果最新一根BAR的高點比前一天的高點更高,那+DM就是最新一根K棒的高點減前一根的高點,否則就是零,這意思是+DM代表了最近一根K棒多頭所新攻克的區域

三,-DM: 同理 ,就代表最近一根K棒空頭所新攻下的區域。

在計算DMI時,要先比較+DM與-DM的值,那個數字大,另一個數字就=0

+DMI這數據就是+DM的移動平均/真實波動區間的移動平均

-DMI則是-DM的移動平均/真實波動區間的移動平均

從計算公式來看,就了解DMI指標是來計算每一根K棒多頭新攻下的城池VS空頭新攻下的城池的對應數據。

這種拿最新一根K棒的開高低收與前一根K棒的開高低收等八個數字對應關係所衍生的技術指標非常非常的多,大家在自訂指標時,可以參考前人的思維邏輯再來加以衍生。

接下來就跟大家分享兩個這類的指標

一,錢德動能震盪指標

Input:length(10, "天期");
variable: SU(0),SD(0); 
if close >= close[1] then 
SU = CLOSE - CLOSE[1] 
//上漲值 
else 
SU = 0; 
if close < close[1] then 
SD = CLOSE[1] - CLOSE 
//下跌值 
else 
SD = 0; 
value1 = summation(SU,length); 
//區間上漲值的總合 
value2 = summation(SD,length); 
//區間下跌值的總合 
value3 = (value1-value2)/(value1+value2)*100; 
//區間上漲值總合減下跌值總合的結果當分子
//兩者的總合當分母 
plot1(value3, "CMO");

這裡用的就只是最近兩期的收盤價

二,相對強度(RS)

類似把一段區間上漲與下跌值相加總之後再作運算的,最普遍被應用的是RSI這個指標,這個指標是由RS相對強度這個概念而來,以下是相對強度的腳本

SetBarMode(1);
//指定為simple函數
input: price(numericseries), length(numericsimple); 
variable: sumUp(0), sumDown(0), up(0), down(0);
if CurrentBar = 1 then begin
sumUp = Average(maxlist(price - price[1], 0), length); 
//第一根的sumUP是過去一段期間內上漲點數合的平均值
sumDown = Average(maxlist(price[1] - price, 0), length); 
//第一個的sumDown是過去一段期間內下跌點數合的平均值
end else begin
up = maxlist(price - price[1], 0);
// up是如果當天上漲時的上漲值
down = maxlist(price[1] - price, 0);
//down是如果當日下跌時的下跌值 
sumUp = sumUp[1] + (up - sumUp[1]) / length;
//sumUp是前一期的sumUP+最近一期上漲值(如果上漲的話)
sumDown = sumDown[1] + (down - sumDown[1]) / length;
//sumDown是前一期的sumDown+最近一期下跌值(如果下跌的話)
end;
if sumDown = 0 then RS = 0 else RS = sumUp /sumDown;

這是個函數腳本,用這個函數,RSI的計算公司如下

所以基本上,RSI這個指標也是K棒開高低收四點所衍生出來的技術指標,它用的是當根收盤價與前一根收盤價的差值。

從上面這些例子,我們可以了解到,有一派的技術指標,是根據K棒開高低收的相對位置,來研判多空勢力的變化,大家可以根據這樣的思維,自己定義多空的不同力量,發展出自己的自訂指標。

 

xqlite banner

歐沙納希價值型交易策略

山雨欲來,面對未知的世界,我們能做的,就是相信那些我們一直相信的,對於價值型投資者來說,相信的就是當股價遠低於合理估值,且重新贏得市場青睞時,就是最佳進場點。

那麼什麼情況下算是股價遠低於估值呢? 歐沙納希有兩條標準

一,本益比夠低

二,營收市值比夠低

 

那麼什麼是重新贏得市場青睞呢?

我用的是暴量剛起漲這個腳本

Input: day(30,"日期區間");
Input: ratioLimit(7, "區間最大漲幅%");

Condition1 = C=highest(C,day);
//今日最高創區間最高價

Condition2 = V=highest(v,day);
//今日成交量創區間最大量

Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大

Ret = Condition1 And Condition2 And Condition3;

這個腳本我很常用,由於是價值型投資,所以我參數用的是較長天期

我根據上述的思維,訂出了一個選股策略

拿這個選股策略去回測,停損停利都設7%, 過去三年勝率是有六成,在市場大跌回升階段,勝率更有七成。所以我們可以先把那些市值營收比及本益比夠低的公司先挑出來,後續再看看這些股票會在那裡止跌打底。下圖是我拿符合上面兩個條件再加上每年EPS都大於1元這個條件所挑出來的股票。

當市場變化莫測時,我們只能相信那些過去我們印證過覺得值得相信的事情,這也是為什麼我們要學習把想法寫成語法,拿歷史資料去回測的原因,因為只有這樣做,才能找出那些是高機率會不斷發生的事情。

xqlite banner

在多變的世界裡,尋找一些靠譜的事

肺炎肆虐下,驚弓之鳥下過度反映的市場情緒,消息面主導了盤勢,我趁著不能外出,重新整理一些比較禁得起時間考驗的交易策略,今天來跟大家介紹一個我入行以來,一直深信不疑的事情。

我入行以來,讓我賺最多錢的股票,是那些團隊很不錯,過去公司也經營的很好,但原本的成長動能受限於外在環境,或是市場飽和而停滯,新的成長動力還沒有出現,所以有些年股價表現的不如人意,但只要給這些認真努力的團隊一點時間,他們終究會找到新的成長動力,股價也有機會重返榮耀,這種劇情是最振奮人心,找到這樣的股票也帶來豊盛的報酬。

我首先用以下的選股策略來找出初步符合條件的股票

其中過去n年有一年eps超過m元的腳本如下

input:period(7,"年期");
input:l1(4,"eps");
value1=GetField("每股稅後淨利(元)","Y");
if trueany(value1>=l1,period)
then ret=1;

過去n天股價都小於m元的腳本則如下

input:period(400,"天期");
input:l1(30,"股價上限");
if trueall(high<=l1,period)
then ret=1;

再搭配股本的限制條件,組合成初步的選股條件

我用這個腳本,搭配暴量剛起漲的價量條件,所組成的選股策略,過去兩年的回測報告,表現的很穩定

但其實這個策略還需要從裡頭去仔細檢視這些公司有那一些還能保有強大的經營團隊,有那一些還競競業業的正在努力的創造下一個新的成長動力。

外在環境雖然充滿變數,但向上提昇的力量如果能眾志成城,就是我們可以長期留意的標的。

值此特別的時日,跟大家分享比較長線的研究方向。