Rでチャートの解析もできますよ!quantmod

Rでも色々とチャートを出したり、テクニカル分析をしたり出来ます。

さらに、その後、色々な解析まで行けるので、MT4だけじゃない解析もいいよって話です。

トレーディングビューからデータを取得する!

これまでにも紹介していますが、ざっとデータを取る分にはトレーディングビューで十分。

ただ、詳細な解析を行いたいのであれば、他のデータベースから、ヒストリカルデータを取得するほうが良いでしょう。FXTFからの過去データ取得に関しては別記事に記載しています。

初心者からプロまで納得のFXTF | キャッシュバックあり!

今回はとりあえず1分足でやってみましょう。好きな通貨ペアで 1分足にして データをエクスポートします。

その際、時間をUNIXタイムスタンプにします。

Rの準備をしよう!

今回紹介するのはRのパッケージのひとつquantmodです。

Quantitative Financial Modelling Frameworkの略で、金融関係の解析に特化したパッケージです。

同時にTTRやxts zooといったパッケージもインストールされます。(たぶん)

インストールされない場合は、それぞれインストールしましょう。

install.packages("quantmod")
install.packages("TTR") #恐らくなくても大丈夫
install.packages("xts") #恐らくなくても大丈夫
install.packages("zoo") #恐らくなくても大丈夫
install.packages("curl") #恐らくなくても大丈夫

quantmodを使ってみよう!

まずは、トレーディングビューなりなんなりで準備した、データを読み込みます。

data <- read.csv("O1.csv") #今回はO1.csvという名前で1分足を準備してます。
data$time <- as.POSIXct(data$time,tz="Asia/Tokyo", origin = "1970-01-01")
 #UNIXタイムスタンプを日本時間に変換
timename <- data[,1] # 1列目が時間のパラメータであると思いますので、timenameに格納
tdata<- data[-1] # dataから時間のパラメータを削除したtdataを作成
rownames(tdata) <- timename # tdataの行名にtimenameをつける

この後に扱うデータ形状はxtsという形なのですが、時間の判断がrownameである必要があるので、加工しなおします。こんな風にすればいいんだなっと体に覚えさせてみましょう。

なお、以下のように書くと、1行目のデータを列名として読み込めます。

tdata <- read.csv("O1.csv", row.names = 1) # 1列目を列名として読み込む

ただし、後者の場合は行名にUNIXタイムスタンプが入ってしまうので、変換できなくなってしまいます。既にyy-mm-dd~になっているような場合に有効です。

xtsデータに変換

xtsは、Rに、もともと入っている、ts(time series)というパッケージの派生です。時間の概念を、扱いやすくしてくれる、パッケージです。

細かい事は気にせず、変換してみましょう。

xdata <- as.xts(tdata) #tdataをxtsに変換

as.~は色々とありますが、()内を~として扱え!って感じのプログラムです。この場合、tdataをxtsとして扱え!ってこと。

UNIXタイムスタンプから変換した場合は、東京時間(日本時間)で分単位になっていると思います。

試しに描画してみます。

plot(xdata)

なんだか不思議なチャートになっています。

ローソク足で書いてみます。

candleChart(xdata)

範囲を指定してみます。

candleChart(xdata["2023-07-28::2023-07-29"])

7月28日から7月29日までの、1分足データが抜き出せました。

足の変換

時間足の変換をしてみます。

さらに、日足でチャートを書いてみます。

m15 <- to.minutes15(xdata) # 15分足に変換
m30 <- to.minutes30(xdata) # 30分足
h1 <- to.hourly(xdata) # 1時間足
ddata <- to.daily(xdata) # 日足に変換
candleChart(ddata)

週の平均値や月の平均値も計算することが出来ます。

apply.weekly(xdata,mean) # () 内は、(データ、function)この場合平均(mean)
apply.monthly(xdata,var) # 月の分散を計算(注:今回のデータの場合 まるごとひと月データ入ってません
apply.daily(xdata,sd) # 日の標準偏差を計算

手っ取り早く終値だけでいいから見たいんだ!トレーディングビューもFXTF口座も無いよ!って人は以下のおまじないをRに打ってください

usd <- getFX("USD/JPY",from = "2023-05-01", to = "2023-08-16", auto.assign = FALSE) 
# 終値(だと思う)だけ過去180日間であれば取得可能、from A to B内を変えてください。
plot(usd) # 描画してみる

取得時点で更新されていなかったのか2023年8月14日までの終値グラフが書かれました。

高安値情報が無いので、ローソク足はかけない模様。

株価も取得できるよ!quantmodなら!

quantmodでは、直接、株価を取得して、チャートを書いたりすることも出来ます。

ためしに、みずほフィナンシャルグループのデータを取得してみましょう

mizuho <- getSymbols("8411",src = "yahooj",from ="2022-01-01", to = "2023-07-31", auto.assign = FALSE) 
#日本のyahooからfrom A to B期間の証券番号"8411"のデータを取得してmizuhoに格納
candleChart(mizuho,subset = "2023-01-01::2023-07-31") #期間指定をsubset以下で行いローソク足表示
chartSeries(mizuho,subset = "2023::2023-07",theme = "white",TA = "addBBands()") 
#期間指定は、年だけ、月までとかでも可、色使いを白に変更し、ボリンジャーバンドもつけてみる

なんだか、それっぽいチャートが書けますね!

みずほのデータを簡単に解析してみましょう。 為替と同様に書いてみます。

apply.weekly(mizuho,mean) # 週でまとめた平均値
apply.monthly(mizuho$YJ8411.Close,var) # 月でまとめた終値の分散
apply.daily(c(mizuho$YJ8411.Low,mizuho$YJ8411.High),sd) #日でまとめた高安値の標準偏差
summary(mizuho) # 簡単便利にデータを要約

サマリでわかる事は微妙です。

apply.~に関しては色々と参考になるものもあると思います。

他にも色々と解析が可能ですが、長くなりそうなので、またの機会に。

おすすめFXアイテム

過去検証や分析はMT4かFT4、Trading viewがおすすめです。

無料が良い人はMT4で、MT4を使わせてくれる口座を使用すると良いです。おすすめはFXTF

ガチで過去検証をやりたい人はFT4、

チャート分析に毎月課金してもいいよって人はTrading viewがおすすめです。無料もあります

Twitterでフォローしよう

おすすめの記事