時系列データのダウンロード
FXの時系列データだけMT4から取るのは面倒だが、私としては四本値がそろっていること、NY時間に基づいていることが希望で、意外とこの希望に沿うデータが見つからないので、やむをえずそうしていた。
ところが、なかなかよさげなデータが見つかり、しかもRから直接ダウンロードできるので、今後はこのデータを使おうと思う。
FXHISTORICALDATA.COM
http://www.fxhistoricaldata.com
FXDDのデータと比べると、1、2pipsずれがあることもあるが、スキャルをやるわけでもないので許容範囲。
データは2001年以降しかないが(NZDUSDは2003年以降)、1時間足データもある。
また、データをダウンロードする便利な関数を作っている人がいたので、少し改造して使わせてもらうことにした。
http://www.trading-team.net/threads/4820-R-Costruire-la-Matrice-di-Correlazione-tra-Cross
こうなると、MT4関連の記事はもういらないようにも思うが、また使うこともあるかもしれないので、とりあえずタイトルの頭に「(旧)」と付けてしばらく残すことにする。
新しいデータでこれまでの記事のプログラムを動かそうとすると、古いデータが不足するので、その場合は開始日を数年遅らせる。
余裕があればこれまでの記事を少しずつ書き換えようと思う。
日足データのダウンロード
時間足データのダウンロード
ところが、なかなかよさげなデータが見つかり、しかもRから直接ダウンロードできるので、今後はこのデータを使おうと思う。
FXHISTORICALDATA.COM
http://www.fxhistoricaldata.com
FXDDのデータと比べると、1、2pipsずれがあることもあるが、スキャルをやるわけでもないので許容範囲。
データは2001年以降しかないが(NZDUSDは2003年以降)、1時間足データもある。
また、データをダウンロードする便利な関数を作っている人がいたので、少し改造して使わせてもらうことにした。
http://www.trading-team.net/threads/4820-R-Costruire-la-Matrice-di-Correlazione-tra-Cross
こうなると、MT4関連の記事はもういらないようにも思うが、また使うこともあるかもしれないので、とりあえずタイトルの頭に「(旧)」と付けてしばらく残すことにする。
新しいデータでこれまでの記事のプログラムを動かそうとすると、古いデータが不足するので、その場合は開始日を数年遅らせる。
余裕があればこれまでの記事を少しずつ書き換えようと思う。
日足データのダウンロード
# パッケージの呼び出し
library(quantmod)
# データをダウンロードする関数
read.fx <- function(tkr,type) {
temp.folder = paste(getwd(),'temp',sep='/')
dir.create(temp.folder,F)
url = paste('http://www.fxhistoricaldata.com/download/',tkr,'?t=',type,sep='')
filename = paste(temp.folder,'/',tkr,'_',type,'.zip',sep='')
download.file(url,filename,mode='wb')
unzip(filename, exdir=temp.folder)
filename = paste(temp.folder,'/',tkr,'_',type,'.csv',sep='')
temp = read.delim(filename,header=TRUE,sep=',')
colnames(temp) = gsub('[X\\.|\\.]','',colnames(temp))
if (type=="hour"){
temp <- temp[,-1]
x <- xts(as.matrix(temp[,-(1:2)]),as.POSIXct(paste(temp[,1],
temp[,2]),format="%Y%m%d %H:%M:%S"))}
if (type=="day"){
temp <- temp[,-1]
temp <- temp[,-2]
x <- xts(temp[,-1],as.Date(as.character(temp[,1]),"%Y%m%d"))}
temp2 <- x[,2]
x[,2] <- x[,3]
x[,3] <- temp2
return(x)
}
# 開始日
startDate <- "2001-01-03"
# 日足データのダウンロード
AUDJPY <-read.fx("AUDJPY","day")
AUDUSD <-read.fx("AUDUSD","day")
CHFJPY <-read.fx("CHFJPY","day")
EURCHF <-read.fx("EURCHF","day")
EURGBP <-read.fx("EURGBP","day")
EURJPY <-read.fx("EURJPY","day")
EURUSD <-read.fx("EURUSD","day")
GBPCHF <-read.fx("GBPCHF","day")
GBPJPY <-read.fx("GBPJPY","day")
GBPUSD <-read.fx("GBPUSD","day")
NZDUSD <-read.fx("NZDUSD","day")
USDCAD <-read.fx("USDCAD","day")
USDCHF <-read.fx("USDCHF","day")
USDJPY <-read.fx("USDJPY","day")
XAGUSD <-read.fx("XAGUSD","day")
XAUUSD <-read.fx("XAUUSD","day")
getSymbols("^GSPC",from=s_date)
getSymbols("SPY",from=s_date)
getSymbols("^VIX",from=s_date)
# データの結合
data <- merge(window(AUDJPY,start=as.Date(startDate)),
window(AUDUSD,start=as.Date(startDate)),
window(CHFJPY,start=as.Date(startDate)),
window(EURCHF,start=as.Date(startDate)),
window(EURGBP,start=as.Date(startDate)),
window(EURJPY,start=as.Date(startDate)),
window(EURUSD,start=as.Date(startDate)),
window(GBPCHF,start=as.Date(startDate)),
window(GBPJPY,start=as.Date(startDate)),
window(GBPUSD,start=as.Date(startDate)),
window(NZDUSD,start=as.Date(startDate)),
window(USDCAD,start=as.Date(startDate)),
window(USDCHF,start=as.Date(startDate)),
window(USDJPY,start=as.Date(startDate)),
window(XAGUSD,start=as.Date(startDate)),
window(XAUUSD,start=as.Date(startDate)),
GSPC[,c(1:3,6)],
SPY[,c(1:3,6)],
VIX[,c(1:3,6)])
# 列名の変更
colnames(data) <- c("AUDJPY.Open","AUDJPY.High","AUDJPY.Low","AUDJPY.Close",
"AUDUSD.Open","AUDUSD.High","AUDUSD.Low","AUDUSD.Close",
"CHFJPY.Open","CHFJPY.High","CHFJPY.Low","CHFJPY.Close",
"EURCHF.Open","EURCHF.High","EURCHF.Low","EURCHF.Close",
"EURGBP.Open","EURGBP.High","EURGBP.Low","EURGBP.Close",
"EURJPY.Open","EURJPY.High","EURJPY.Low","EURJPY.Close",
"EURUSD.Open","EURUSD.High","EURUSD.Low","EURUSD.Close",
"GBPCHF.Open","GBPCHF.High","GBPCHF.Low","GBPCHF.Close",
"GBPJPY.Open","GBPJPY.High","GBPJPY.Low","GBPJPY.Close",
"GBPUSD.Open","GBPUSD.High","GBPUSD.Low","GBPUSD.Close",
"NZDUSD.Open","NZDUSD.High","NZDUSD.Low","NZDUSD.Close",
"USDCAD.Open","USDCAD.High","USDCAD.Low","USDCAD.Close",
"USDCHF.Open","USDCHF.High","USDCHF.Low","USDCHF.Close",
"USDJPY.Open","USDJPY.High","USDJPY.Low","USDJPY.Close",
"XAGUSD.Open","XAGUSD.High","XAGUSD.Low","XAGUSD.Close",
"XAUUSD.Open","XAUUSD.High","XAUUSD.Low","XAUUSD.Close",
"GSPC.Open","GSPC.High","GSPC.Low","GSPC.Close",
"SPY.Open","SPY.High","SPY.Low","SPY.Close",
"VIX.Open","VIX.High","VIX.Low","VIX.Close")
# NAの補間
data <- na.locf(data)
# 使用済みオブジェクトの削除
rm(startDate)
rm(AUDJPY, AUDUSD, CHFJPY, EURCHF, EURGBP, EURJPY, EURUSD, GBPCHF,
GBPJPY, GBPUSD, NZDUSD, USDCAD, USDCHF, USDJPY, XAGUSD, XAUUSD
)
rm(GSPC, SPY, VIX)
時間足データのダウンロード
# 時間足データのダウンロード
AUDJPYH1 <-read.fx("AUDJPY","hour")
AUDUSDH1 <-read.fx("AUDUSD","hour")
CHFJPYH1 <-read.fx("CHFJPY","hour")
EURCHFH1 <-read.fx("EURCHF","hour")
EURGBPH1 <-read.fx("EURGBP","hour")
EURJPYH1 <-read.fx("EURJPY","hour")
EURUSDH1 <-read.fx("EURUSD","hour")
GBPCHFH1 <-read.fx("GBPCHF","hour")
GBPJPYH1 <-read.fx("GBPJPY","hour")
GBPUSDH1 <-read.fx("GBPUSD","hour")
NZDUSDH1 <-read.fx("NZDUSD","hour")
USDCADH1 <-read.fx("USDCAD","hour")
USDCHFH1 <-read.fx("USDCHF","hour")
USDJPYH1 <-read.fx("USDJPY","hour")
XAGUSDH1 <-read.fx("XAGUSD","hour")
XAUUSDH1 <-read.fx("XAUUSD","hour")
# データの結合
dataH1 <- merge(AUDJPYH1,AUDUSDH1,CHFJPYH1,EURCHFH1,
EURGBPH1,EURJPYH1,EURUSDH1,GBPCHFH1,
GBPJPYH1,GBPUSDH1,NZDUSDH1,USDCADH1,
USDCHFH1,USDJPYH1,XAGUSDH1,XAUUSDH1)
# 列名の変更
colnames(dataH1) <- c("AUDJPY.Open","AUDJPY.High","AUDJPY.Low","AUDJPY.Close",
"AUDUSD.Open","AUDUSD.High","AUDUSD.Low","AUDUSD.Close",
"CHFJPY.Open","CHFJPY.High","CHFJPY.Low","CHFJPY.Close",
"EURCHF.Open","EURCHF.High","EURCHF.Low","EURCHF.Close",
"EURGBP.Open","EURGBP.High","EURGBP.Low","EURGBP.Close",
"EURJPY.Open","EURJPY.High","EURJPY.Low","EURJPY.Close",
"EURUSD.Open","EURUSD.High","EURUSD.Low","EURUSD.Close",
"GBPCHF.Open","GBPCHF.High","GBPCHF.Low","GBPCHF.Close",
"GBPJPY.Open","GBPJPY.High","GBPJPY.Low","GBPJPY.Close",
"GBPUSD.Open","GBPUSD.High","GBPUSD.Low","GBPUSD.Close",
"NZDUSD.Open","NZDUSD.High","NZDUSD.Low","NZDUSD.Close",
"USDCAD.Open","USDCAD.High","USDCAD.Low","USDCAD.Close",
"USDCHF.Open","USDCHF.High","USDCHF.Low","USDCHF.Close",
"USDJPY.Open","USDJPY.High","USDJPY.Low","USDJPY.Close",
"XAGUSD.Open","XAGUSD.High","XAGUSD.Low","XAGUSD.Close",
"XAUUSD.Open","XAUUSD.High","XAUUSD.Low","XAUUSD.Close")
# NAの補間
dataH1 <- na.locf(dataH1)
# 使用済みオブジェクトの削除
rm(read.fx)