2012-03-02 2 views
2

금융 주식 시장의 시작 및 종료 시간을 나타내는 날짜와 시간의 인덱스를 얻고 싶습니다. 매일 색인.날짜와 시간의 추출 및 색인, R 단위의 미세한 오라클 데이터의 시작 및 종료 시간이 다양 함

그러나 개장 시간은 교환이나 일광 절약 시간제로 인해 규칙이 변경되어 달라 지므로이 색인을 사용하여 정확하게 열 수있는 반환 값을 얻을 수 있습니다.

저는 현재 Hang Seng 선물 지수도보고 있는데, 이것은 중간에 점심 시간이 있기 때문에 인덱스에도 잘 기록하고 싶습니다. I.E. 나는이 점심 시간의 데이터 차이로 인해 하루에 두 차례의 폐회가 될 것입니다. 점심 시간이 항상 일정하지 않아서 xts [ "THH : MM/THH : MM"]의 xts 함수를 사용하면 작동하지 않습니다. 특정 일의 클로즈드 클로즈 데이터를 얻을 수있는 타임리스트 서브 세트에서

예를 들어, 점심 시간은 2011 년 3 월에 변경되었으므로, 2011 년 2 월 14 일 점심 시간 대 2011 년 3 월 14 일 점심 시간 다음과 같은 데이터 ... 점심 시간은 14 년 2 월 2011 12시 30 분 시작했지만 14 3 월 12시 시작하는 방법

> HI.raw.sing['20110214']["T12:25/T14:35"] 
        HI.Open HI.High HI.Low HI.Close HI.Volume 
2011-02-14 12:25:00 23020 23028 23018 23018  180 
2011-02-14 12:26:00 23018 23023 23014 23019  108 
2011-02-14 12:27:00 23020 23033 23016 23033  142 
2011-02-14 12:28:00 23031 23038 23025 23026  173 
2011-02-14 12:29:00 23026 23046 23026 23042  264 
2011-02-14 12:30:00 23044 23059 23041 23042  314 
2011-02-14 14:30:00 23044 23044 23044 23044  311 
2011-02-14 14:31:00 23118 23129 23099 23117  781 
2011-02-14 14:32:00 23117 23143 23113 23143  554 
2011-02-14 14:33:00 23143 23156 23139 23139  762 
2011-02-14 14:34:00 23139 23161 23138 23138  644 
2011-02-14 14:35:00 23139 23149 23137 23144  326 
Warning message: 
timezone of object (Asia/Singapore) is different than current timezone(). 

> HI.raw.sing['20110314']["T11:55/T13:35"] 
        HI.Open HI.High HI.Low HI.Close HI.Volume 
2011-03-14 11:55:00 23060 23075 23059 23071  195 
2011-03-14 11:56:00 23071 23071 23059 23064  187 
2011-03-14 11:57:00 23064 23074 23063 23068  96 
2011-03-14 11:58:00 23069 23075 23068 23075  116 
2011-03-14 11:59:00 23075 23078 23069 23073  120 
2011-03-14 12:00:00 23073 23098 23073 23089  231 
2011-03-14 13:30:00 23090 23090 23090 23090  103 
2011-03-14 13:31:00 23082 23112 23074 23108  326 
2011-03-14 13:32:00 23108 23124 23100 23123  179 
2011-03-14 13:33:00 23124 23133 23111 23111  326 
2011-03-14 13:34:00 23110 23119 23103 23115  148 
2011-03-14 13:35:00 23115 23139 23114 23129  284 
Warning message: 
timezone of object (Asia/Singapore) is different than current timezone(). 

주의 사항이있다.

기본적으로 내가 찾고있는 것은 타임 스탬프에서 이러한 중단을 감지하는 기능입니다. 그러나 누락 된 연속 된 타임 스탬프를 사용하는 것은 거래 일의 중간에 아무 것도 거래되지 않는 경우가 있기 때문에 때때로 작동하지 않습니다. 따라서 데이터가 기록 될 때 데이터가 누락됩니다. 내가 찾고있는 것은 timeseries xts 데이터의 간격이 5 분을 넘었고 조작 할 수있는 목록으로 출력하거나 색인으로 사용하여 데이터를 쉽게 하위 집합으로 만들 수 있습니다.

+0

HangSeng 점심가 몇 번 변경되었습니다,하지만 몇 _only_ 그래서 (당신이주의 위의 변경 2011-03-07이었다 http://en.wikipedia.org/wiki/Hong_Kong_Stock_Exchange#Trading_hours 참조) 내가 당신과 비슷한 것을하는 것을 다루는 방법은 그 모든 예상되는 틈을 간단하게 기술하는 것이 었습니다. 그런 다음 다른 격차를 발견 한 빈센트의 대답과 비슷한 코드를 작성했습니다 (데이터 확인 단계에서 누락 된 데이터를 찾는 것이 목적 임). –

+0

Yeh, 나는 항셍 무역 시간이 많이 변하지 않았다는 것에 동의하지만 이것은 일반적인 시장 데이터를 보는 훨씬 더 광범위한 프로그램의 일부이며이 변경은 내 포인트를 아주 멋지게 묘사 한 것이라고 생각했다. 이 문제에 대한 해결책은 더 넓은 문제에 대한 해결책이 될 것입니다. –

답변

2

diff(index(x))을 사용하여 5 분을 초과하는 구멍을 식별 할 수 있습니다.

# Sample data 
k <- 100 
library(xts) 
x <- xts(rnorm(100), sort(Sys.time() + runif(100, 0, 5*3600))) 
# Start of the breaks exceeding 5 minutes 
i <- diff(index(x)) > 300 
close <- x[c(which(i),length(x))] 
open <- x[c(1,which(i)+1)] 
break_start <- index(close) 
break_end <- index(open) 
+0

감사합니다! 그게 훌륭해. –

관련 문제