前言

最近在做量化分析的時候 剛好遇到一群"沒有接觸過程式"的朋友
雖然很想請他們用Python 開始做量化分析 
但新手小白也是剛接觸阿~~~~

所以不如就從R開始學好了  雖然這是想寫Python的網頁 (慚愧...)

本文是我想要達到的目標是 

以最簡單直覺的方式,也就是用excel的方式啦!!

讓大家馬上就能  感受寫程式的快樂

我的介紹方式如下 

0.安裝 => 0.1設定路徑=> 1.讀資料  => 2.生成數列 =>   3.for 和 if 函數 =>  4.輸出資料 => 5.用這幾招來畫股票的MA線(例子)

 


0.安裝

安裝...其實真的很簡單 就是 在網路上google網站/搜尋載點/下載 一直按 下一步/下一步/下一步就好了~~

google 一下 R 就好了 第一個就是

然後點CRAN 去到載點

1.png2.png

載點很多 就點台灣的吧~~

3.png

安裝對新手小白來說 當然是裝Windows的囉

4.png

點baise 然後就下載安裝程式了

5.png

6.png

如果你一直按下一步  安裝完成後

桌面應該會出現這兩個 i386的那個是 32 bit的,X64 當然就是給 64 bit 用 (我是用這個)

不過你點哪個應該是都可以使用啦 

 

 

9.png


0.1設定路徑:    for 新手小白

因為R要讀寫檔案 總得知道位置

而我們設定現行目錄的話 他就會在我們當前的資料夾找檔案 (而我們也都把檔案放在同個資料夾)

之後就不用每次都跟他說  要去哪裡找資料夾了 

方法: 打開R => 檔案 => 變更現行目錄 

我是在桌面新增 一個Rtest的資料夾

2018-05-19_LI.jpg10.png

 

 

 


1.讀入資料

會想寫R程式 大部分的情況是希望對 手裡的資料 作一些處理

所以怎麼吧資料讀進R裡 就是最重要的一步了(廢話)

新手小白們剛開始學的時候 是用一個簡單的指令  read.csv

懂國中英文的人都知道 read 就是讀的意思 那位什麼指令裡有 csv 呢!?

其實 csv 是一種檔案型式 就像EXCEL預設存出來的檔案 就是 xlsx

csv 是比較簡單的檔案型式 讀入的時候比較好處理

我們可以透過EXCEL 的另存新檔 把 xlsx 轉成 csv檔

2018-05-19 (1)_LI.jpg

大家可以試試 這裡有範例檔

http://ge.tt/3h3Ffqp2

1.png

大家可以注意他會寫成 逗點分隔檔 也就是csv檔

再來 回到R裡面  鍵入read.csv("範例_轉檔.csv")

就可以看到資料自動顯示在畫面上 只是筆數很多....

1.png

我寫了一個 x=read.csv("範例_轉檔.csv")  意思是我把 這些資料存在 x 裡面

注: 我還可以 鍵入 colnames(x)  他會顯示出 [1] "時間" "價錢"  也就是我EXCEL 裡的欄位名稱

如果你要只要價錢那行的話 你可以打 x=x[,2] (因為價錢在第二個欄位)  這樣便可以只取我要的欄出來了 

好啦 以上就是 簡單讀入資料的方法


2.生成數列

生成序列 聽起來好像很專業

其實指的就是類似 excel 裡的一行資料

比如說 有一行資料叫時間 那他長得就是 1,2,3,4....,14這個樣子

1.png

下面是我們在R 簡單生成出數列的方法

比如我生成一個數列叫qq的數列 可以寫成 qq=1:20 那他就是 1,2,3,4.....,20 

這序列總共有20個值  或我們把它想成20 個格子 裡面每個格子裡面放1 個數字

那我們可以用 qq[5] 叫出第 5個格子的值出來 它就是5

另一個寫法是用 c(1:20) 它生出來的東西和 直接寫 1:20 是一樣的

不過 我也可以寫成 qq=c() 那他叫出來的 也會是一個像是數列的東西 只是我們沒有放值進去

所以 當我打qq的時候 它會是NULL

c() 的這個寫法 一般是我還沒決定 這個數列有幾格/要放幾個數字時 

我可以先跟R 說 我有一個數列了~  那之後可以再把數字塞進去

像是 qq[5]=100  就是我把第 5 格塞 100 這個值進去

不過 我只有塞第 5 格 所以其他的當然還是空的囉 

1.png

關於數列還有一個常用的 指令 length 也就是計算數量的長度(格子數)

如下圖: 我打 length( x )   那我們就可以知道 x 的長度  

1.png

其他 R裡邊的 數列,序列或是矩陣 還有很多的東西可以介紹  

不過新手小白知道 以上的這些就可以做很多事情了~~~


3.for 和 if 函數

我們先複習一下 EXCEL 的 IF 函數

舉個例 :  下圖在說 C2這攔 是依據條件來給值得  條件:"當B2大於 100" 的時侯

如果滿足條件 那麼 C2會是1 , 反之 C2會是0

注意:這邊的IF 是大寫喔~~

1.png

那在R 上如何 實行這件事呢?   

我們可以用 if 這個函數  它的用法是 if ( b2>100 ) { c2=1 } else { c2=0 }

稍微正式一點的講法是:  if ( 條件式 ) { 條件式滿足時 要做的事  } else { 條件式不滿足時 要做的事 

1.png

注意 : 對R而言 這些 括號是很重要的 不要忘了打喔~~ 

反之 PYTHON 是注重縮排 多一個空格少一個空格就差很多 

R 則是沒什麼影響 你可以多一些 空格或縮排

再來要講 for 函數了, EXCEL 裡面沒有 for 函數 

原因是 EXCEL 可以用下拉的方式 把函數都複製上去
例如: 

1.png2.png

 也就是說 我在C2寫的 if 函數 在EXCEL下拉欄位 那C3 也會自動套用 C2的寫法 ( 這就是EXCEL 好用的地方啊.....) 

 例如 :

1.png

稍微正式一點寫成這樣:

  for ( 控制變數 in 範圍 )   

  {

        控制變數 在 每一次在範圍要做的事情

  }

不過 還是以後多看一點例子 才會知道怎麼用比較好


4.輸出資料

前面講了讀入資料的概念後

其實輸出資料也式只要一個指令就好 : write.csv

我們來試試一個很白癡的例子: 把資料讀入 再原封不動的輸出 

x=read.csv("範例_轉檔.csv")

write.csv(x,"範例_輸出.csv",row.names=F)

你會的到一個資料夾 然後資料完全一樣

10.png

注意: write.csv 會自動多一欄 1,2,3,4,.... 的index  補上 row.names=F 可以把這功能關掉

如果你想了解更多 可以打 ?write.csv 會有更進一步的說明  其他指令也是

那以上 就是這篇的教學啦~~


5.用這幾招來畫股票的MA線(例子)

關於MA線的算法有很多 

我算的是最簡單的SMA 然後是每5日算一次 

N=5    #這邊示範 MA 5
x=read.csv("範例_轉檔.csv")
x=x[,2]   # 因為價錢是在第二欄
MA=c()
qq=0

for(qq in c(1:length(x)) )

   if( qq < (N+1) ) { MA[qq]=x[qq] }
    else {  MA[qq]=(  x[qq-1]+x[qq-2]+x[qq-3]+x[qq-4]+x[qq-5]  )/N    }
}

如何 這邊都是用我們剛剛才學會的招式  就可以簡單地算出MA值了


後記:

打這篇大概花了我超過半天的時間 

雖然網路上google 就有很多介紹了

但我是以一個新手小白的立場  並且對量化分析感興趣的人 來寫這篇文章

希望對各位看官們有幫助囉~~ 然後如果你發現有錯誤的地方 

請不吝指教 在下方留言吧

未來我也許會介紹更多R語言相關的東西吧......

但我還是比較想寫學最近學Python的心得啦XD

 

arrow
arrow

    Markjong001 發表在 痞客邦 留言(0) 人氣()