2017-01-14 13 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 

に等しい意味し、これはエラーを返す、特定の時間ウィンドウ内で、位置が平坦にバインドされていることを、制約を適用したいです:

"Error in as.POSIXlt.POSIXct(.POSIXct(.index(x)), tz = indexTZ(x)) :invalid 'tz' value". 

このエラーは他の計算でも発生しますが、これは簡単で問題があるため、この例を使用しました。追加情報として

> 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'のように曖昧です。オーストラリアにはESTがあります - 北アメリカと同じく東部標準時間。より良い国/都市を使用する。 'ライブラリ(lubridate) ymd_hms( '2000-01-01 12:11:10'、tz = 'australia/melbourne')' –

答えて

-2

あなたのエラー:

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

はまたxtsコンストラクタでタイムゾーンを設定することができます時間オブジェクトの誤解のために発生します。

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

あなたはESTを使用すると、あなたを:あなたはこのような何かを行うことによって、あなたのインデックスの変換を試してみてください

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

のようなものを使用するためにはUNIXタイムスタンプを持っている必要があります環境変数を変更する必要があります(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つの文字の形でタイムゾーンを指定

+3

この回答は単純に間違っています。 xtsインデックスはすでにPOSIXctです。文字に変換して 'as.POSIXct'を呼び出す必要はありません。さらに、私と他の人が言ったように、「EST」は有効なタイムゾーンではありません。 –

+0

なぜ 'EST'は有効なタイムゾーンではありませんか? https://www.timeanddate.com/time/zones/est – mutilis

+0

タイムゾーンを指定する有効な方法ではありません。 「EST」は米国またはオーストラリアの東部標準時を意味しますか、それともカナダのタイムゾーンですか? '?timezone'では、「ヨーロッパ/ロンドン」、「アメリカ/ロサンゼルス」、「太平洋/イースター」などの場所(通常は都市)の参照方法が優先されます。 –

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") 
関連する問題