如何用技術分析確定買入點-以R語言為量化工具

如何用技術分析確定買入點-以R語言為量化工具

來自專欄如何使用R語言來進行技術分析

很多人聽說過技術分析,比如均線指標(MA),簡單地講就是短期均線向上穿越長期均線時作為買點(比如5日均線向上超越20日均線),短期均線向下穿越均線時作為賣點(比如5日均線向下穿越20日均線)。也可以用10日均線超越80日來作為買賣點,或者20日超越100日,但如何確定哪個的時間長度是最好的呢?萬一30日超越60日收益率更高呢?

這就需要用歷史數據作為參考去回測,考慮到計算量的問題,需要用到軟體,這裡我將用R語言(R studio)演示一遍如何確定MA指標。

基本原則如下:

1、計算公式:MA(i)-MA(j)>0,買入點

MA(i)-MA(j)<0,賣出點

2、採用窮舉法,i ∈(5,10,20,30,40,50,60,70,80,90,100,110)

j∈(10,20,30,40,50,60,70,80,90,100,110,120),同時j>i,即測試每一種i和j的情況

3、採取收益率和勝率兩個指標綜合比較

4、原始數據來自wind,數據為2004年1月2日-2018年6月8日的上證綜指每日收盤價,漲跌幅等數據,以及wind自動計算出的5-120日平均值。

由於直接從wind提取數據到excel的文件後綴是.xls,需要轉存為csv後綴方便R讀取。#號後邊的文字是方便理解的備註,R語言會自動跳過不執行。

######################R代碼:

setwd("D:/Rdata") #設置默認數據讀取目錄

mydata<-read.table("MAjiaocha original data.csv",header=TRUE,sep=",",fill=TRUE)#輸入csv數據,第一行為數據名,從第二行開始讀取數據,數據間隔是逗號。

mydata1<-head(mydata,n=3401)

mydata1<-tail(mydata1,n=2917)

tradeday<-mydata[,1]#第一列數據命名為交易日期

index<-mydata[,5]#上證指數命名為index

index<-index[487:3403]#選擇2006年1月4日-2017年12月29日的收盤數據

change<-mydata[,9]#漲跌幅命名為change

change<-(change+100)/100#把漲跌幅轉化成可以直接計算收益率的乘數

change<-change[486:3402]#選擇2006年1月4日-2017年12月29日的收益率數據

y=matrix(rep(0,2917),2917,1)#創建一個1列2917行的0矩陣,用來記錄每日漲跌幅

x=matrix(rep(0,169),13,13)#構造一個13行13列的0矩陣,用來記錄每種策略的總收益

#n兩個循環,計算MA交叉倉位,累計收益率,i取值10-21是因為文件第10列是MA5,22列是MA120

for(i in 10:21){for(j in 11:22){if(i<j){

{cangwei<-mydata1[,i]-mydata1[,j]}

{for(c in 1:2917){if(cangwei[c]>0){cangwei[c]=1}else{cangwei[c]=0}}}

(y=cangwei*change)

(z=1)

for(v in 1:2917)

{if(y[v]>0){z=z*y[v]}else{z=z}}

(x[i-9,j-9]=z)}else{x[i-9,j-9]=0}}}

##運行完以上循環後,運行如下程序,得到12X12的收益率表格並存儲到目標文件夾

write.table(x,"MAjiaocha.csv",sep=",")

#####################

在D:\Rdata文件夾中我們得到結果MAjiaocha.csv,裡面結果如下:

我們選取收益率最高的5個組合:

MA70>MA90, MA60>MA90, MA40>MA90, MA5>MA100, MA90>MA110(其中列為i即短期,行為j即長期)

然後我們在excel表裡單獨測試這5個指標的勝率,變倉總數和頻率,結果如下:

最終70>90勝率和收益率綜合結果最好,收益為7.49倍,勝率為58%。

以上就是我用R語言計算MA的過程,供參考。

寫在最後的話:

1、技術指標是一種思路,其基礎假設是過去能夠反映未來。但如果未來僅僅是未來,跟過去沒有關係,則技術指標就沒有意義。這時候就需要採取別的方法,如Monte-Carlo模擬。

2、MA是技術指標中最簡單的,還有其他的如RSI、TRIX、成交額、成交量等,一般情況下需要幾個指標一起考慮,單獨看MA的效果還可以但不如綜合幾種好。


推薦閱讀:

TAG:量化 | 技術分析 | 交易系統 |