用google 試算表算出存股時機
國防醫學大學 醫學系
一、前言
由於每個月有15000元學校發的薪餉,在生活開銷與娛樂用途之餘,還是能每月存8000元,這四,五年下來已經存了30幾萬元,其實過去兩年也都有在股市持續”見習”,稍微投資過一兩檔股票小賺,不過隨著閒錢越來越多,在醫院實習的事務也越來越多,股市的籌碼面與消息面沒辦法及時了解,於是專心關注基本面與常見定存股標的,目前持續關注玉山金(2884)、合庫金(5880)、第一金(2892)、兆豐金(2886)、元大高股息ETF(0056)、台泥(1101)。我不貪心,穩穩賺好5%-10%年報酬率就好,不想一直靠著籌碼面與消息面短進短出,大部分的存股要做長期投資領配股配息,不過一些技術指標還是能當不錯的參考,來幫助自己存股存在相當不錯的買點,以下討論如何用google試算表單寫程式,以常見的技術指標來維持自己的存股紀律,不用每天時時刻刻看盤被波動影響心理,而短進短出追高殺低。
二、方法
Googlefinance是google試算表用來追蹤股價非常好用的工具。
以玉山金(2884)為例,前面要再加上台北股市代號TPE,常見的指令代碼範例如下:
開盤價=GOOGLEFINANCE("TPE:2884","priceopen")
昨天收盤價=GOOGLEFINANCE("TPE:2884","closeyest")
當日最高=GOOGLEFINANCE("TPE:2884","high")
當日最低=GOOGLEFINANCE("TPE:2884","low")
當日交易量=GOOGLEFINANCE("TPE:2884","volume")
想抓歷史紀錄,現價的後面帶入指定區間。我這裡抓過去700天的=GOOGLEFINANCE(“TPE:2884”,”price”,TODAY()-700,TODAY())
由於一週交易日有5天,扣掉一些國定假日,過去700天大約出現470筆資料,我大約想拉出500筆資料,這樣後面要算KD值,越到後面誤差會較小。
如何取的KD值:
由於google試算表還沒辦法直接取得KD值(找了很久都沒找到方法),KD值只好照定義來土法煉鋼。
計算 KD 前,必須計算所謂的 RSV 值 (未成熟隨機震盪值, Row Stochastic oscillator Value),定義如下 :
RSV=100*(第N天收盤價-近N日內最低價)/(近N日內最高價-近N日內最低價)。
N 一般為 9, 以 9 天為參數算出來的 K/D 值也就稱為 K9 與 D9 了。
接著就可以計算 K/D 值了, 其算式如下 :
Kt=(1/3)RSVt + (2/3)Kt-1
Dt=(1/3)Kt + (2/3)Dt-1
這邊要注意RSV的近N日最高價與近N日最低價,因此每天的資料不只需要收盤價,也需要每天的最高及最低價。指令代碼如之前所說的,將”price”改成”high”及”low”。範例:
=GOOGLEFINANCE("TPE:2884","high",TODAY()-700,TODAY())
=GOOGLEFINANCE("TPE:2884","low",TODAY()-700,TODAY())
接著讓表單找出近9日最高及最低價
近9日最高價: =MAX(D2:D10)
近9日最低價: =MIN(F2:F10)
把這些公式往下拉到足夠的格子,像我是直接拉到500格。
計算RSV值,指令碼範例:
=100*(B10-H10)/(G10-H10)
一樣往下拉到足夠的格子。
接著計算KD值。
由於要資料初始的第9天才會有算出來的KD值,而且KD值公式會算到前一天,因此第8天先各帶入50到K值與D值,別擔心會影響後面的KD值,我們有400多筆資料,越到後面會越跟實際的KD值相符,當然初始第9天也可以準確地帶入當天實際的KD值,但我們的公式=GOOGLEFINANCE(“TPE:2884”,”price”,TODAY()-700,TODAY()),也就是我們700天前的資料會一直變,沒那個時間每天查,反正400多筆資料運算下來,KD值會非常趨近實際KD值。
我們實際隨機檢驗兩筆資料:
玉山金(2884) 2018/12/20
K值:20.4383,D值:25.6182
查閱台灣股市資訊網: 實際當天的K值:20.4,D值:25.6

再檢驗一天
玉山金(2884) 2019/8/1
K值:12.7133,D值28.3936
實際當天的K值:12.7,D值:28.4
查閱台灣股市資訊網: 

接著我也做了成交量的KD值
一樣要先有成交量的資料: =GOOGLEFINANCE("TPE:2884","volume",TODAY()-700,TODAY())
接著算出KD值的方法跟上面一樣
常常有投資的書或是理財節目都會講量價關係,成交量也是有些重要,我等一下也會把這些資料拿來參考。
再來存股非常講究的就是均線,由於我資金有限,可能一兩個月買一次股票,如果我這個月想存,那我會希望存在月均線以下,代表我這次買的成本大約相當於這個月每天都買的平均價。
這邊我挑的指標是5日平均跟20平均,範例公式如下:
五日平均: =SUM(B2:B6)/5
二十日平均: =SUM(B2:B21)/20
一樣把格子拉到足夠的格子讓他自動運算好。
資料整理到這邊,我接下來要參考的資料就是股價的K值與D值、成交量的K值與D值、五日均線、二十日均線。
接著我需要一個指數來評估買賣的程度,就像我們醫學上一堆guideline、一堆XX score、一堆flowchart。
這是我自訂的參考指數
=(100-股價K值)*4+(股價K值-股價D值)*2+(100-成交量K值)+(成交量K值-成交量D值)+(5日均價-當日收盤價)/當日收盤價*600+(20日均價-當日收盤價)/當日收盤價*1200
寫成指令代碼如下
=(100-J21)*4+(J21-K21)*2+(100-Q21)+(Q21-R21)+(S21-B21)/B21*600+(T21-B21)/B21*1200
我自訂參考指數這樣的原因是我想要在低的K值進場,K值0-100之間,K值越小我的指數要越大,於是100-股價K值,然後*4是我給這項指標的加權。而股價K值>D值代表在黃金交叉後到死亡交叉前,因此股價K值-D值,這項指標給予加權*2,後面成交量的K值與D值的指標道理相同,只是給予的加權都*1,不過這邊量的KD值注意一下,有些人認為量要多價才會漲,不過我認為量太多股價波動較高,我們是要存股,我是比較想在量少穩定的時候存股,因此指標寫這樣。而均價的部分,我希望比5日均價與20日均價低越多越好,由於不同公司的股價基準不同像台積電約300,玉山金約27,只有相減會失準,必須以比率計算,因此算式:均價-當日收盤價)/當日收盤價,由於數字出來是%數,需要*100,再給予加權,那我這邊希望多以20日均價加權多一點,因此算式:(20日均價-當日收盤價)/當日收盤價*1200。
再來這個指數有些複雜,數字大約在0~900之間,我希望像醫學上的guideline一樣打分數儘量以5或10來打分數,那我們存股族比較多的時間是買股票,賣股票比較少,因此正數的部分代表買,買的級數分到10個最高10分,負數的部分代表賣,賣的級數少一點分到5個最低-5分。
觀察了過去400多筆資料後評估,>800給10分,>650給9分,>500給8分,>400給7分,>300給6分,>240給5分,>190給4分,>160給3分,>140給2分,>120給1分,>80給零分。>60給-1分,>50給-2分,>40給-3分,>30給-4分,其他再更低的給-5分
這項指令代碼用IF的寫法來寫,範例如下:
=IF(U21>800,"10",IF(U21>650,"9",IF(U21>500,"8",IF(U21>400,"7",IF(U21>300,"6",IF(U21>240,"5",IF(U21>190,"4",IF(U21>160,"3",IF(U21>140,"2",IF(U21>120,"1",IF(U21>80,"0",IF(U21>60,"-1",IF(U21>50,"-2",IF(U21>40,"-3",IF(U21>30,"-4","-5")))))))))))))))
於是得到像這樣的資料: 

雖然數字已經整理到簡單許多,但我仍然需要人性化一點,可以給予文字建議。由於=GOOGLEFINANCE(“TPE:2884”,”price”,TODAY()-700,TODAY())這項公式,不會給予當天的股價資料,如果想要即時資料的寫法是這樣=GOOGLEFINANCE("TPE:2884","price"),並且只會以一個儲存格顯示股價。我們上面這樣做出來的表格資料指會做到昨天的資料,不過這樣也夠了,我接下來要做”明天建議的策略”,也就是當天早上起來,看到昨天的資料算出隔天的策略,那今天就可以照策略操作。
觀察了過去400多筆資料後發現,若這天的建議買賣程度在5以上,前一天小於這天,那明天就是個好買點,也就是我發現在數字成長的第3天是好買點,而且5以上越好,相反的賣點的道理相同。
經過多次驗證與調整後的指令代碼寫法範例:
=IF(AND(U22>400,U21>400),"明天建議大量買進",IF(AND(U22>300,U21>300),"明天建議稍微多量買進",IF(AND(U22-U21>=20,U22>240),"明天建議中量買進",IF(AND(U22-U21>=20,U22>190),"明天建議少量買進",IF(AND(U22<31,U21<41),"明天建議多量賣出",IF(AND(U22<41,U21<51),"明天建議稍微多量賣出",IF(AND(U22<51,U21<61),"明天建議中量賣出",IF(AND(U22<61,U21<61),"明天建議少量賣出","明天建議再觀望"))))))))
註:U項是”自訂參考指數”,不要用”建議買賣程度”去寫,因為”建議買賣程度”出來的數字對表單來說算是文字沒辦法做運算。 

三、驗證績效
首先,先聲明這個方法目前還沒有要投到正式的學術期刊,我就簡單檢驗一下績效,驗證方法不會太嚴謹,抽樣可能不夠或是可能有偏差,實證的等級不一定能符合各位的的標準。
我就拿這個方法來跟定期定額比較好了,也是用google試算表來拉數據檢驗,以玉山金(2884)為例假設定期定額每十天買5張來比較,這400多筆資料下來,定期定額的均價會是24.4874元。接下來照這個方法的策略,假設建議少量買進那就買1張,建議稍微中量買進那就買2張...以此類推,同樣也有賣出的部分,建議少量賣出就賣1張...以此類推,不過賣出的頻率照這個方法也是很少啦,最後他算出來的均價是23.3498元。
然後這是兩種方式操作下來均價的趨勢圖,藍色的是照表單建議的策略操作下來的均價,紅色的是定期定額操作下來的均價。

四 、結語
照這個方法,每天早上起來就可以知道今天的策略如何了,雖然這個方法不會買賣股票發大財,但確實是一個有紀律的存股好方法。我希望自己是一個能專注在本業,同時投資理財上也有不錯的績效,績效跟大盤差不多就好,而且我挑的標的已經研究過基本面,財務穩定配息不錯,值得長期投資的標的,每天只要看一下這個試算表算出來的建議,開盤前先掛好單,然後專心本業,這樣就好了。
五、參考資料

















