PineとRでFXデータのグラフを見てみよう!

今回はtradingviewで過去データを取ってきて、それをRでグラフにしてみて傾向を見てみよう!という内容です

まずはデータを取得しよう!

今回は各通貨の時間的な変化の程度を見てみようと思います。つまり、ドル円はこの時間に動きやすく、オーストラリアドルはこの時間に動きやすい… といった事がわかるんじゃないかと思います。

自分がトレードする時間帯に良く動く通貨を狙うと利益を上げやすくなりますね。

では、まずはpineでデータを取ってきます。

以下のようなプログラムを組みました

//@version=5
indicator("時間変動")
h = (hour + 14)%24 // 取引所と東京時間の誤差から日本時間に変更する
audv = high-low   // 高値と安値の差を取ることで変化の大きさを示す
usdv = request.security("OANDA:USDJPY","60",high) - request.security("OANDA:USDJPY","60",low) // request.security関数で他の通貨ペアを指定 
eurv = request.security("OANDA:EURJPY","60",high) - request.security("OANDA:EURJPY","60",low)
plot(h,"hour")
plot(audv,"AUD")
plot(usdv,"USD")
plot(eurv,"EUR")

今回はオーストラリアドル、米ドル、ユーロをすべてクロス円で見ています それぞれ大陸が違うという感じにしてみました。

実際にデータを抜き出してきたものがこちら

CSVですがエクセルで開いています。一番上にデータがない状態のNaNがあるので、この行だけは削除しておきましょう

また、普通にインストールしたRの場合データがドキュメントにあるとやりやすいので、ドキュメントにデータを保存し、かつ、わかりやすいようにファイル名を"fx.csv"と変更しました。

Rで解析

今回は出てきたデータを時間ごとにまとめて、それをグラフに書いてみようと思います

以下のようなコードで進めていきます。 ただ、プログラム初心者にはところどころわからないところが出るかもしれませんが、雰囲気で感じ取ってください。 扱っているうちにどういう意味か分かるようになっていきます。まずはやってみようの精神

data <- read.csv("fx.csv") # dataという変数に fx.csvというcsvファイルを読み込む
avedata <- aggregate(x=data[c("AUD","USD","EUR")],by = list(data$hour),FUN = mean) # avedataにaggregateの計算結果を入れる
# aggregate()は(x=データ、by=まとめる項目、FUN= 機能)
avedata # 計算結果を表示

dataにはいくつかのデータ列がありますが項目名がついています。c()はベクトルとして扱うコード””で囲まれた記号等は文字列として扱われます。したがって、c("AUD","USD","EUR")をdata[]内に表記すると、dataのAUD,USD,EURを取り出せます。

また、list()というのは様々なデータ構造を入れることのできる関数なのですが、by=に求められている構造がlist型なので、用いています 変数に対して$を付けると、列が抽出できます したがって、ここではbyにhour列を抽出しています 

FUNはfunctionの略で今回はmean(平均)を調べています。

このような計算結果が出ていればOKです。

今回の記述方法ではhourでまとめましたが、Group.1と変更されてしまいました。そこで、hourに直しておきます

 colnames(avedata)<-c("hour","AUD","USD","EUR")

面倒ですが、全項目に名前を付けます。

また、以下のように記述すると、名前を変更しなくてもGroup.1ではなくhourにできます。

いろいろなやり方があるよってことを通じてプログラミングに慣れて頂けたら…

avedata <- aggregate(cbind(AUD,USD,EUR) ~ hour,data,mean)

ggplot2でグラフ化してみよう!

次にこのデータをグラフ化していきます。

Rにもとから入っているグラフでも良いのですが、様々なデータを書く上ではggplot2のようなパッケージを使う方が後々楽なので、導入していきます。 

まずはパッケージをインストールしましょう

 install.packages("ggplot2")

これでパッケージがインストールされます。ちなみにtidyverseをインストールする際に一緒にダウンロードされてくるので、以前の記事でtidyverseしている人は改めて入力する必要はありません

library(ggplot2)

これで準備は完了です。

ggplot2の使い方

ggplot2はグラフィックに必要な要素をいくつかに分けて記述します

ggplot2の基本

データを入れる

描画のレイヤーを作る

スケールを決める

テーマ

その他

ざっくりこんな感じです。 今回はデータは"avedata"を使っていきます。

まずはデータを記述する枠を作ってみましょう

 fxgraph <- ggplot(data = avedata,mapping = aes( x = hour, y = USD))
 fxgraph

こんな感じのグラフのキャンバスが出来ていればOKです

次にどんなグラフを作るのかっていうのを決めていきます。今回はバーグラフを作りたいのでgeom_barを使います 他にも

geomシリーズ

geom_point 散布図

geom_line 線グラフ

geom_smooth 線形回帰

geom_histgram ヒストグラム

geom_polygon ポリゴングラフ

geom_map 地図グラフ

geom_dotplot ドットグラフ

ggplot2では + 記号を用いてこのキャンバスに色々なグラフやテキストを乗せていくイメージです。

fxgraph2 <-  fxgraph + geom_bar(stat = "identity") #  バーグラフをstat="identity"でそのままの値を用いることを宣言
fxgraph2

同様にして、AUD,EURのグラフも出してみましょう

fxgrapha <- ggplot(data = avedata,mapping = aes( x = hour, y = AUD)) +
   geom_bar(stat = "identity") 
fxgraphe <- ggplot(data = avedata,mapping = aes( x = hour, y = EUR)) +
   geom_bar(stat = "identity") 
fxgrapha
fxgraphe

別々にグラフは出てきますが、並べてみました

こうしてみると、基本的に良く動く時間というのは10時 16-17時 22-24時頃だという事がわかりますね。

ただ、AUDは比較的10時頃が活発で、ユーロは夕方と深夜 米ドルは深夜により動くこともわかりますね。

おすすめFXアイテム

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

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

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

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

Twitterでフォローしよう

おすすめの記事