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