2013-10-24 4 views
3

일부 개인 프로젝트의 경우 OHCL 차트를 만들 때 R과 quantmod가 필요하기 때문에 R에 들어가려고합니다. 나는 촛불에 머물러있다. 창조 단계, 그리고 왜 나는 그 이유를 잘 모르겠다. '매일'입력 파일을 사용하면 문제가 없지만 시간별 데이터에서 시간별 차트를 만들려고하면 큰 실패입니다. 여기 quantmod를 사용하여 사용자 정의 시간별 데이터를 R로 변환하는 방법은 무엇입니까?

내가 사용하고 데이터의 샘플입니다

> zz <- read.csv(dataFile, sep=",", header=TRUE, stringsAsFactors=T) 
> head(zz) 
       DATE OPEN HIGH LOW CLOSE VOLUME 
1 2012-10-23 02:00:00 22 22 22 22 171 
2 2012-10-23 03:00:00 22 22 22 22 171 
3 2012-10-23 04:00:00 22 22 22 22 171 
4 2012-10-23 05:00:00 22 22 22 22 171 
5 2012-10-23 06:00:00 22 22 22 22 171 
6 2012-10-23 07:00:00 22 22 22 22 171 

당신이 볼 수 있듯이, 첫 번째 데이터는 모두 동일하지만 내 입력 파일의 데이터를 1 년이 있으며, 가격은 간다 끝에 최대 96.

> xx <- xts(zz[,2:6], order.by=as.POSIXct(zz[, 1], tz="", format="%Y-%m-%d %H:%M:%S")) 
> head(xx) 
        OPEN HIGH LOW CLOSE VOLUME 
2012-10-23 02:00:00 22 22 22 22 171 
2012-10-23 03:00:00 22 22 22 22 171 
2012-10-23 04:00:00 22 22 22 22 171 
2012-10-23 05:00:00 22 22 22 22 171 
2012-10-23 06:00:00 22 22 22 22 171 
2012-10-23 07:00:00 22 22 22 22 171 
> tail(xx) 
        OPEN HIGH LOW CLOSE VOLUME 
2013-10-22 06:00:00 96 96 96 96 115 
2013-10-22 07:00:00 96 96 96 96 115 
2013-10-22 08:00:00 96 96 96 96 115 
2013-10-22 09:00:00 96 96 96 96 115 
2013-10-22 10:00:00 96 96 96 96 115 
2013-10-22 11:00:00 96 96 96 96 118 

지금은 (나에게)처럼 보이는 XTS가 올바른지 :

는 내가 다음에 할 것은 내 XTS 그런이 ZZ 데이터 프레임에서 개체를 만드는 것입니다. 이름이없는 열 1에는 날짜 + 시간이 있고 quantmod에서 chartCandle()이 이해할 수 있도록 올바르게 명명 된 나머지 열이 있습니다. 첫 번째 인수가 내 XTS 개체의 부분 집합이 될 이유

> candleChart(xx, name=tickerName, subset="last 3 weeks", bar.type = "ohlc") 
Error in periodicity(x) : can not calculate periodicity of 1 observation 
> candleChart(xx) 
Error in periodicity(x) : can not calculate periodicity of 1 observation 

잘 모르겠어요 : 여기

내가 그것을 플롯 할 때 무슨 일입니까?

> periodicity(xx) 
Error in periodicity(xx) : can not calculate periodicity of 1 observation 
> periodicity(xx) 
Error in periodicity(xx) : can not calculate periodicity of 1 observation 

두 번째 호출이 올바른 보이지만이 주기성 (xx는) 내 XTS 만 1 관찰이 있다고 생각하는 이유 확실하지 않다 : 또한, 나는 것을 발견?

+0

'chart_Series'를 시도해보고 같은 오류가 발생하는지 확인하십시오. –

+0

@geektrader 옙 같은 문제. 나는 조슈아가 옳은 것 같아 보인다. – RitonLaJoie

답변

2

periodicity 전화 :.

p <- median(diff(.index(x))) 
if (is.na(p)) 
    stop("can not calculate periodicity of 1 observation") 

px 1 명 관찰이있는 경우, 또는 (색인에 누락 된 값이있는 경우 median 호출에는 na.rm=TRUE가 없기 때문에 NA 수 있습니다

> xx <- xts(1:10, as.POSIXct(c(1:5,NA,7:10),origin='1970-01-01')) 
> periodicity(xx) 
Error in periodicity(xx) : can not calculate periodicity of 1 observation 
> candleChart(xx) 
Error in periodicity(x) : can not calculate periodicity of 1 observation 

인덱스의 NAzz[, 1]을로 변환 할 때 일광 절약 시간과 관련이있을 수 있습니다. 0.

+0

그것이 그럴 수있는 것처럼 보인다. diff (.index (xx))의 값을 확인할 때 3600, 7200 및 NA가 두 개 있습니다. 이 NA를 제거하는 방법은 무엇입니까? GMT + 2 컴퓨터에서 데이터를 생성합니다. 내 값으로 설정해야합니까? ""인수로. " 내 인덱스에서이 값이 NA로 표시되는 것으로 보입니다 (2013-03-31 01:00:00 및 2013-03-31 02:00:00). 이 시간은 as.POSIXct의 관점에서 존재하지 않습니까? – RitonLaJoie

+0

'candleChart'에 대한 인수로'time.scale = 'hourly''을 지정하는 것이 도움이됩니까? –