這段時間我用XS的策略作交易,發現幾個常用的策略如果是同一天出現好多個買進訊號,不見得是好事,可是如果幾個我常用的交易策略,接二連三地隔個幾天就陸陸續續出現買進訊號,那麼這檔標的就很值得留意了。
我最近常用的幾個交易策略,就如先前跟大家都有報告過的
1.突破股票箱
2.多空判斷分數從谷底翻昇
3.突破糾結均線
4.多次到頂而破
5.烏龜進出場指標
基本上,我大概就用這些指標做成交易策略來挑股票,每天,這些交易策略會幫我挑出一些股票,大盤好的時候,一天會跳出近四十檔股票,我會從中再找一些比較值得留意的標的。
我在挑標的時,通常會比較去找那些可能由虧轉盈的低價股,特別是那是營收動能轉強的股票。
然後我發現,如果這樣的股票,在一段時間內,不同的策略接二連三地出現買進策略,那這檔股票作多的勝率就會相對提高。
以附圖中的金像電為例,八月上旬多空判斷分數空轉多,八月中股價在十元附近樌向盤整後,出現了突破股票箱的交易訊號,同一天烏龜進出指標也出現買進訊號,股價漲到接近一三元附近拉回到12元左右,又在十月下旬出現突破糾結均線的交易訊號,這次烏龜進出場指標也出現買進訊號,然後到了十一月中旬再出現多次到頂而破的訊號。
經過這幾個月來的測試,我發現這種類似雞尾酒混合式的交易策略還蠻有用的,在語法上,我們可以把整個策略的code都搬在一起,然後用迴圈的方式,去找出相連幾天有不止一種交易策略出現買進訊號的股票,例如找出N日內M種選股雷達出現超過P種買進訊號的股票,我個人覺得,頗值得一試,介紹給大家。
Author Archives: 發財橘子
合理的本益比跟盈餘品質與成長力有關
“為啥這兩檔股票EPS一模一樣,但股價差這麼多?”
經常被問到這樣的問題。
扣掉那些人為炒作的因素,我的經驗是盈餘愈穩定的,以及盈餘成長能見度愈高的,可以享有的合理本益比就愈高。
相反的,那些今年大賺,明年大虧的公司,以及那些數年來盈餘數字都未見成長的公司,市場給的本益比就比較低。
現在有了XS,我們可以用敘述式來呈現這兩個概念,例如我們如果要找那些盈餘品質不錯,過去五年營業利益成長率都沒有衰退超過5%的公司,我們就可以這麼寫
value1=GetField("營業利益成長率","Y");
if trueall(value1>-0.05,5) then ret=1;
如果我們要找連續五年營收都比前一年成長的公司
我們可以這麼寫
value2=GetField("營收成長率","Y");
if trueall(value2>0,5)
then ret=1;
透過這兩個條件的交集,我們可以找出盈餘品質不錯,業績又成長的公司,這些就是合理本益比可以抓的比較高的公司。
從預估量方向預測未來漲跌
一直以來都有個困擾,今天看著大盤個預估量上上下下,好像有點感覺,可是又不確定該怎麼用?
大盤上漲的時候,今天預估量是不是也跟著上升? 還是反而下降了,使得漲勢停滯不前?
還好現在有XS!
終於有了個解決的方法,除了可以統計今天一整天的預估量變化,還可以清楚看出來盤勢的動能強弱與否!
先下載這個檔按匯入XQ後我們就可以開工囉!
https://www.dropbox.com/s/hs1mxyp5rqcgvnn/PREVolume.zip?dl=0
解開以後請先開啟IDE匯入xsb檔 並在XQ主畫面匯入dao頁面檔! 然後開啟就完成了!
這個腳本很精簡 ,除了算出今天累計成交量,還把特製函數算出來的預估量腳本也畫了出來
var:cVol(0),bil(100000000); if DateDate[1] then cVol = V else cVol +=V; plot1(cVol/bil,"累計成交量(億)"); plot2(cVol*prevolumex(time)/bil,"預估成交量(億)");
畫面就像下圖一樣喔!
今天9:26分成交量預估來到低點,隨後指數下跌過程中 預估量一路往上揚!! 很明顯下跌力道變強了!果然大跌一段!
9:48 跌到低點後預估成交量不再放大反而開始縮小,相對低點就大概可以抓得出來!!
而10點以後的指數雖然力圖向上,但是預估量卻是越來越小! 表示多頭人氣信心不足,很難有大表現了!!
這麼方便的工具,快下載回去使用吧! 使用XQ還能用歷史資料慢慢研究,增加看盤功力!! 真是一舉雙效!!
預估個股的成交量
要預估個股的成交量,比起預估一群股票的總成交量難很多!
特定個股的成交因為會受到某些力量的推動,使得在預估上更加困難,所以我們只能選擇一個比較圓滑的方式來做!
預估出來的值當然和演算計算方法有著絕對的關係,不同人寫出來的當然預估值可能會有極大的差異! 我們在這邊提供一個概念簡單的方式讓大家比較能快速了解!!
預估通常的做法就是拿過去一段時間的資料來做未來的預測,這段期間的長短也成為了預估值的關鍵因素! 資料量當然是越大越好,我們在至這邊取1350筆當做是一個初始值!
為了讓各種分鐘頻率,各種市場的商品都能用,我們設計了一個計算一天有幾跟K棒的結構,然後把資料讀取用1350+500做安全值,拿1350做最大引用,接下來就來看腳本了!
var:cVol(0),barCount(0),DayBarCount(0),PV(0); if Date=Date[1] then begin cVol = V; barCount=1; end else begin cVol+=v; barCount+=1; end; DayBarCount = maxlist(DayBarCount,barCount); PV = cVol + (DayBarCount-barCount)*average(v,1350); plot1(PV,"個股成交量預估");
cVol就是當天實際累積的成交量,PV就是當天預估量,我們可以看到指標畫在圖上以後,整個預估量的變化很明顯,可以看得出來股價在動的時後有沒有力量在推! 預估量的增加表示推動往股價正在移動方向的力道越強!!
預估漲跌幅%!
這裡很重要的一件事: 這種預估方法是利用歷史資料統計出來的結果,有點像是天氣預報一樣,不可能出現今天收盤就是會漲個幾%的這種情況!
呈現的概念會是: 降雨0 mm 機率是 80%, 降雨100mm以內機率是20%,這樣我們就能推斷出來說:喔~ 今天很有可能會是個大晴天,如果有雨,也只是飄一點點!
這樣一來至少我們就知道說應該是不用帶雨傘出門!但是,絕對不是說,今天不會下雨ㄟ! 這就是預測原理,各位看官要能理解這點才好往下看下去耶!
有了這樣的概念,我們可以拿一個最初步的方法來統計,就是把昨天的漲跌和今天的漲跌統計一下! 看昨天漲跌了N%的時候,今天會漲跌M%? 先把漲跌分門別類一下,跌超過6%為一個Level,然後跌5~6%每1%往上推就一個Level,一直到上漲超過6% ,一共14個Level,分別給編號!
好了 那我們就可以用昨天的漲跌幅去找Level,再看看今天的Level落在哪!! 全部統計起來以後,我們就有一個歷史資料庫囉! 當然,這個資料如果找越久,採樣越多,資料就越客觀,用個5年資料來看的話,資料讀取要設定1300,最大引用設定1,接下來就可以看腳本畫出來的圖囉!
array:Run[15,15](0); var: xLevel(0),i(0),sumx(0),qLevel(0),MaxCount(0); if C[0]/C[1]-1 < -0.06 then xLevel = 0 else if C[0]/C[1]-1 < -0.05 then xLevel = 1 else if C[0]/C[1]-1 < -0.04 then xLevel = 2 else if C[0]/C[1]-1 < -0.03 then xLevel = 3 else if C[0]/C[1]-1 < -0.02 then xLevel = 4 else if C[0]/C[1]-1 < -0.01 then xLevel = 5 else if C[0]/C[1]-1 < 0.00 then xLevel = 6 else if C[0]/C[1]-1 < 0.01 then xLevel = 7 else if C[0]/C[1]-1 < 0.02 then xLevel = 8 else if C[0]/C[1]-1 < 0.03 then xLevel = 9 else if C[0]/C[1]-1 < 0.04 then xLevel = 10 else if C[0]/C[1]-1 < 0.05 then xLevel = 11 else if C[0]/C[1]-1 < 0.06 then xLevel = 12 else xLevel =13; Run[xLevel[1],xLevel]+=1; sumx=0; MaxCount=0; qLevel=-1; for i = 0 to 13 begin sumx+=Run[xLevel[1],i]; MaxCount =MaxList(Run[xLevel[1],i],MaxCount); if MaxCount = Run[xLevel[1],i] then qLevel =i; end; Plot1 (100*Run[xLevel[1], 0 ]/sumx,"下跌超過 6%機率"); Plot2 (100*Run[xLevel[1], 1 ]/sumx,"下跌5~ 6%機率"); Plot3 (100*Run[xLevel[1], 2 ]/sumx,"下跌4~ 5%機率"); Plot4 (100*Run[xLevel[1], 3 ]/sumx,"下跌3~ 4%機率"); Plot5 (100*Run[xLevel[1], 4 ]/sumx,"下跌2~ 3%機率"); Plot6 (100*Run[xLevel[1], 5 ]/sumx,"下跌1~ 2%機率"); Plot7 (100*Run[xLevel[1], 6 ]/sumx,"下跌0~ 1%機率"); Plot8 (100*Run[xLevel[1], 7 ]/sumx,"上漲0~ 1%機率"); Plot9 (100*Run[xLevel[1], 8 ]/sumx,"上漲1~ 2%機率"); Plot10 (100*Run[xLevel[1], 9 ]/sumx,"上漲2~ 3%機率"); Plot11 (100*Run[xLevel[1], 10 ]/sumx,"上漲3~ 4%機率"); Plot12 (100*Run[xLevel[1], 11 ]/sumx,"上漲4~ 5%機率"); Plot13 (100*Run[xLevel[1], 12 ]/sumx,"上漲5~ 6%機率"); Plot14 (100*Run[xLevel[1], 13 ]/sumx,"上漲6~ 以上機率");
布林通道指標
前兩天看到了週刊上一個成功的投資故事,故事的主角先前不管透過基本面,技術面,在股票操作上一直都是虧錢,後來他覺得採取科學的精神,透過統計學常態分配的原理,用兩個標準差做為他進出的依據,他的邏輯是股價的波動也是一種常態分配,有95%的機率股價會落在平均值加減兩個標準差的區間裡,所以如果股價突破兩個標準差,就算是超漲,可以獲利了結,跌破兩個標準差,那就是超跌,應該逢低承接。他說自從他改成使用這種統計上的操作方式,長期都能獲利。
這位老兄找到的聖杯,其實就是技術分析上常有人用的布林通道(BBand)
我用XS的腳本跟大家做個說明
在XS裡頭有一個BollingerBand的函數,這個函數的腳本如下:
Input: price(numericseries), length(numericsimple), _band(numericsimple); BollingerBand = Average(price, length) + _band * StandardDev(price, length, 1);
意思是說BolingerBand是移動平均加上N個標準差。
然後我們用以下的腳本在畫布林軌道線
input: Length(20), UpperBand(2), LowerBand(2); variable: up(0), down(0), mid(0); SetInputName(1, "天數"); SetInputName(2, "上"); SetInputName(3, "下"); up = bollingerband(Close, Length, UpperBand); down = bollingerband(Close, Length, -1 * LowerBand); mid = (up + down) / 2;
然後畫出up,down,mid三條線,這樣就可以符合這位老兄的操作心法了,我把它畫在加權指數上,其結果就如附圖
為了讓大家可以很簡單的了解投資標的目前所處的位置,我們可以根據這三條線,作出以下的定義
1.股價接近或突破up,代表過熱
2.股價接近或跌破down,代表超跌
3.股價跌破down之後,回頭穿越down,代表反彈
4.股價突破mid代表翻多
5.股價突破up後跌破up代表拉回
6.再跌破mid後代表翻空
如此一來,我們就可以很清楚的標示每一檔個股目前的狀態,以及對應的操作策略。
XS的好處就是每次在報章雜誌上看到別人的操作秘訣,我們總能寫出一個對應的腳本來變成自己的操作策略。

粒子學說指標
我們都知道空氣中存在著氧分子和氮分子,這些分子其實是存在空間中的小粒子,雖然看不到,不過會因為地點,氣溫和高度的不同,使得分子中蘊含不同的能量,我們呼吸起來的感覺也就不一樣!就好像在喜馬拉雅山上呼吸起來特別困難,因為空間中的氧粒子密度低!
嘗試著把這樣的概念應用到時間序列裡,我們把最近的100根K棒拿來當做是個股最近一段時間的”狀態”表徵,然後建立起一套評估標準,看看這檔股票的”活力”是不是足夠!
1. 方向度:收盤價在K線上有三種收法,1.C>C[1] 上漲 2.C=C[1] 平盤 3. C C[1] 的個數 CountIf(C>C[1],100) 看看得了幾分
2.熱絡度:成交量也是相當重要的一環,我們用成交值當基底,看看有幾期成交值比起來會在平均之上
countif( GetField(“成交金額”) > average(GetField(“成交金額”),100),100)
3.波動度: 股價除了要有方向,交投要熱絡,當然波動要夠也是必需關注的! 在100期中有幾期的波動大於平均波動可以這樣寫 CountIf( (H-L)> average(H-L,100),100)
上面這三個值可以看得出來多數情況下應該都會是50左右,所以我們把50當做是一個常態! 150分就是一個常態的中點,最後我們把上面三個值加起來減去常態的150,寫成下面腳本
var:Dirt(0); Dirt = CountIf(C>C[1],100);
var:Heat(0); Heat = countif( GetField("成交金額") > average(GetField("成交金額"),100),100);
var:Vola(0); Vola = CountIf( (H-L)> average(H-L,100),100);
var:Eng(0); Eng = Dirt+Heat+Vola-150;
//指標 plot1(Dirt,"方向度"); plot2(Heat,"熱絡度"); plot3(Vola,"波動度"); plot4( Eng,"能量");
//警示 if Eng >0 and Eng[1] =< 0 then ret=1;
我們知道開車要往反方向走的時候一定要先停車,調頭,再加速,粒子也是相同,都會有持續期,所以我們可以看到圖上的能量分數都會比較穩定不會變來變去! 所以我們可以拿來當警示條件設到策略雷答達中! 看台積電昨天就是剛剛好能量轉正呢! 今天走勢就很容易可以猜得出來!! 是不是很簡單呢?

原子激態法找即將爆發個股
幾天前交易所宣布新制,放寬台灣普通股漲跌幅限制,大家該不該因此對行情有所期待呢? 答案很明顯!
我們知道加權指數成份股中1成的股票經常佔全部8成的成交量,而這1成的股票,大多都是大型股,一整年都不知道會不會看到一次漲停板或跌停板? 而其它冷門的股票漲跌停出現時相對的風險也會大大提高!
對於一個投資者而言,獲利是來自股價波動,而不是股價限制,不然的話,去做美股就好了,因為如果照這個理論,只要沒有漲跌停限制的股票大家都會賺翻了!
而股價波動的來源,其動力主因當然是公司營運狀況,或說財報表現!不過今天我們要提供另外一種預測方法,讓我們找到會出現波動的股票!
先解釋一下原理:我們知道原子是由一個核心和許多電子所組成,一般狀態下,原子會是一個穩定狀態,電子會繞著核心轉呀轉! 有些正旋有些逆旋,就像股票一樣,股價很穩定,有時候出現漲,有時後出現跌!
科學家看這樣很沒搞頭.想弄點事來做!有個方法,我們稱之為”激態”,是把一個電子往這個原子打,這個時候有趣的事就發生了,因為原本的轉的好好的,多了一個電子後整個原子就”激”起來了! 哇! 有點像是吃了大補帖一樣生龍活虎想做些啥事! 這時後科學家就能從後面偷笑了!
股價也是,原本一檔價格平穩的個股,要怎麼樣讓它達到”激態”呢? 就是打個電子下去啊! (砸錢) 那要多少錢才夠呢? 當然跟個股的大小有關囉!
我們利用下面的警示腳本在策略雷達中洗所有普通股的Tick資料
variable:Dv(0),; if date Date[1] then begin Dv=v; end else begin if date = currentdate and time 0.05 and (dv+v)*1000/q_CurrentShareCapital > 2/1000 and v*1000/ q_CurrentShareCapital > 2/10000 then ret=1; dv+=v; end;
會看到有趣的事喔! 我們找到我們要的波動了!!
昨天跑出來個股,平均振幅高達3.5%!! 上漲者平均漲幅 3.1%!~ 下跌者平均跌幅2%!! 真是太神奇了,加權指數幾乎沒波動ㄟ!! 快來試試吧! 不要告訴別人喔!!
多方強力發動首選
我們都知道開盤價是一個很好的多空力參考價! 而要怎麼利用的方法我們之前也提過很多不同類型!今天要介紹的是一個短期多方強力發動的典型,屬於快速賺到價差的短進短出法,使用上最好是能搭配XQTrade讓訊號跳出來以後能快速下單,這樣才比較能迎刃有餘的抓到每個機會!
這個警示腳本如下 請搭配日線
var:High3(0),High5(0); High3 = highest(high[1],3); High5 = highest(high[1],5); condition1= Close > Open and Open > High3 and Close >High5; if condition1 =true and condition1[1] =false and volume >100 then ret=1;
第一步 var:High3(0),High5(0); 先設兩個變數分別記3天和5天的高點
High3 = highest(high[1],3); 就是把過去3天 昨天 前天 大前天 這三天的最高點存到我們剛剛設定的變數裡!
同樣的High5再做一次 把昨天到五天前的最高點記錄到High5裡!
接下來就可以開始判斷!
condition1是一個是非變數,如果後面的判斷式全部都是成立,那就會是True(是)!
第一個判斷點是今天的 Close > Open (現在的收盤價(現價)要大於開盤價)
第二個判斷點是今天開盤價要大於前三天最高點 Open > High3
第三個判斷點是現在的收盤價(就是現價)要大於前5天最高點 Close > High5
這三個式子都成立的時候condition1就是為TRUE, 因為我們要找的是剛剛發動的個股,
所以昨天一定沒有這個情況,要加上condition1 =true and condition1[1] =false 即今天發生了,可是昨天沒發生! 加個量至少要100張就可以回ret=1; 表示馬上提醒我!!
這可以找到什麼樣的個股呢?我們先看一下華新科是哪一天跳出來的!再來看看今天跳出了什麼個股!大家可以追蹤驗證一下喔!!
歷史沈降法
有的時候就是需要等待! 但是聰明的人不會讓等待成為空白!
以前在實驗室常常會有這樣的需求,做液態層析時,得把原始的樣本品倒入一個管柱裡面,然後開始漫常的等待!這個樣品會從管柱的頂端慢慢往下流,最下面拿個杯子接我們要的東西! 通常做完一輪都要好幾個小時!
這時候如果就在管子前面等待,真的很悶! 所以通常都會找點事情做,譬如說再開一個管子來做,這樣事情就會變得有效率一些!!
這有點像買股票,看好了某一檔個股,買進以後可能就得面對漫長的等待,等到結果出來,也不知道是什麼時候了!! 如果看盤只能一直觀察著少數幾檔股票,等待著行情發動! 那消耗掉的時間真的是在消磨生命!
所以做XS策略是非常有必要的! 研究好了一個策略讓它每天自動跑! 然後就可以做下一個策略! 把時間可以有最大的運用!
因為知道在股票發動前的等待很痛苦,所以我們研究了一個方法,讓股價在沉澱一段時間後瞬間發動時,可以馬上抓到快速正要起漲的價位,當然最好也是要配何XQTrade直接點擊下單,這樣才能最有效率!!
今天我們把等待當做是一個門坎,因為大部份的人都沒辦法等待,所以可以利用XS去等待,那已經贏過一大票人了!! 我們先把這個方法稱為粒子沉降法,這有點像是我們在河水裡要抓魚的時候一樣,當我們踩進水裡,整個溪底的淤泥都會攪成一團,讓河水變得混濁,這時候要抓魚就很困難了,因為我們根本不知道魚在哪!? 所以得靜靜等候,等到泥巴都沉到底水面恢復能見度的時候再準備下手!
等待河水恢復清徹就是等水中的大顆粒子沉降到底,我們寫成腳本:
第一步我們先來倒裝一下,要創新高的股票才會入選,這樣資源可以節省一點!
variable:NewHigh(false); Newhigh= C >highest(h[1],20);
再來就是當創新高後我們才去算看看是不是粒子沉降了! 這裡我們把每天的平均高低點差當做是沉降的標準,差很大就是還浮很高,差越小就是沉很低了! 加上第一步的條件和成交量至少一百張:
if newhigh and volume>100 and average(h[1]-L[1],3) < average(h[1]-L[1],5) and average(h[1]-L[1],5) < average(h[1]-L[1],10) and average(h[1]-L[1],10) < average(h[1]-L[1],20) then ret=1;
這樣就可以了! 用日線搭配全市場個股票! 當這樣的條件發生時,有個好處是即便是很大的股票也會適用,看一下統一實! 股本一百五十億的股票照樣漲停板ㄟ! 快點試試吧!!





