2017-01-14 6 views
3

NASDAQ의 분 데이터로 작업 중이며 인덱스는 "2015-07-13 12:05:00 EST"입니다. Sys.setenv(TZ = 'EST')으로 시스템 시간을 조정했습니다.'tz'값이 유효하지 않습니다. 시간대 문제가 있습니다.

간단한 구매/보류/판매 전략을 프로그래밍하고 싶습니다. 따라서 기초로서 평면 위치의 벡터를 만듭니다.

pos_flat <- xts(rep(0, nrow(NASDAQ)), index(NASDAQ)) 

은 그 때 나는 동일한 1

pos_flat["T13:41/T14:00"] <- 1 

에 특정 시간 창에서 위치가 내 경우 즉, 평면으로 결합되어, 제약 조건을 적용 할 그리고이 오류를 반환 :

다른 계산을하면이 오류가 발생합니다.이 예제는 사용하기 쉽고 문제를 보여주기 때문에이 예제를 사용했습니다.

> Sys.timezone 
function (location = TRUE) 
{ 
    tz <- Sys.getenv("TZ", names = FALSE) 
    if (nzchar(tz)) 
     return(tz) 
    if (location) 
     return(.Internal(tzone_name())) 
    z <- as.POSIXlt(Sys.time()) 
    zz <- attr(z, "tzone") 
    if (length(zz) == 3L) 
     zz[2L + z$isdst] 
    else zz[1L] 
} 
<bytecode: 0x03648ff4> 
<environment: namespace:base> 

나는 TZ 값 문제를 이해하지 않습니다 ... 어떤 아이디어 : 추가 정보로

?

+0

'동부 표준시'와 같이 모호합니다. 호주는 북미와 마찬가지로 동부 표준시 (EST)를 보유하고 있습니다. 국가/도시를 사용하는 것이 좋습니다. '라이브러리 (lubridate) ymd_hms ('2000-01-01 12:11:10', tz = 'australia/melbourne') ' –

답변

-2

귀하의 오류 :

Sys.setenv(TZ = "America/New_York") 

는 또한 xts 생성자에서 시간대를 설정할 수 있습니다 시간 객체의 오역 때문에 발생합니다. 당신이 뭔가를 수행하여 인덱스의 변환을 시도

pos_flat["T13:41/T14:00"] <- 1

같은 것을 사용하기 위해 UNIX 타임 스탬프가 있어야합니다 :

index(NASDAQ) <- as.POSIXct(strptime(index(NASDAQ), "%Y-%m-%d %H:%M:%S"))

당신은 EST를 사용하려면, 당신 환경 변수를 변경해야합니다 (EST 시간대에 거주하지 않는 경우). 그래서 모두 모두,이 작업을해야합니다 :

Sys.setenv(TZ = 'EST') 
#load stuff 
#... 
index(NASDAQ) <- as.POSIXct(strptime(index(NASDAQ), "%Y-%m-%d %H:%M:%S")) 
pos_flat <- xts(rep(0, nrow(NASDAQ)), index(NASDAQ)) 
pos_flat["T13:41/T14:00"] <- 1 

를 자세한 내용은

안부 R.에서 POSIXct 및 POSIXlt 구조를 살펴이 세 문자의 형태로 시간대를 지정

+3

이 대답은 간단히 잘못되었습니다. xts 인덱스는 이미 POSIXct입니다. 문자로 변환하고'as.POSIXct'를 호출 할 필요가 없습니다.또한 나와 다른 사람들이 말한 것처럼 "EST"는 유효한 시간대가 아닙니다. –

+0

'EST'이 (가) 유효한 시간대가 아닌 이유는 무엇입니까? https://www.timeanddate.com/time/zones/est – mutilis

+0

시간대를 지정하는 올바른 방법이 아닙니다. "동부 표준시"는 미국 또는 호주의 동부 표준시를 의미합니까 아니면 캐나다 표준 시간대입니까? '? timezone'에서 말하는 것처럼 "시간대를 참조하는 가장 좋은 방법은 'Europe/London', 'America/Los_Angeles', 'Pacific/Easter'와 같은 위치 (일반적으로 도시)입니다. –

3

"EST"은 올바른 표준 시간대 사양이 아니기 때문에 오류가 발생합니다. 시간대를 인쇄하고 표시 할 때 자주 사용되는 약어입니다.

"EST"은 미국의 동부 표준시를 나타 내기 때문에 색인은 "2015-07-13 12:05:00 EST"으로 인쇄됩니다. 그 시간대에 TZ 환경 변수를 설정하려면 국가/도시 표기법으로 Sys.setenv()을 사용해야합니다

pos_flat <- xts(rep(0, nrow(NASDAQ)), index(NASDAQ), tzone = "America/New_York")