セッションと時間の関数

From TradingView Wiki
Jump to: navigation, search
Language: English  • 日本語 • Русский


time関数とtime変数

Pineには、トレードセッションと日時を扱う特別な方法があります。IBMの30分足に、2つのスクリプト“Bar date/time”と “Session bars”を適用した簡単なチャートで確認してみます。

Chart time 1.png

こちらは最初のスクリプト "Bar date/time" のコードです。

study("Bar date/time")
plot(time)

これはtime変数の意味を示しています。この変数 time は、チャート上の各バーの日付/時間 (タイムスタンプ)をUNIX形式で返します。上のスクリーンショットでわかる様に、最後のバーの time の値は、1397593800000 です。この値は、00:00:00 UTC(1970年1月1日)から経過したミリ秒で、2014年4月15日 20時30分 UTC に対応します。(オンライン上に多くのUnix時間変換ツールがあります。例えば OnlineConversion.com)。スクリーンショットのチャートの時間目盛りでは、最後のバーの時間に2014-04-15 16:30と表示されています(これは取引所のタイムゾーンで、UTCとの時差は-4時間です)。

2番目のスクリプト "Session bars" です。

study("Session bars")
t = time(period, "0930-1600")
plot(na(t) ? 0 : 1)

こちらは変数 time ではなく、ビルトイン関数 time で、セッションバーと取引時間外のバーをどの様に区別するかを示しています(取引時間外のバーの背景は灰色になっています)。 この関数 time は、バーが指定されたトレードセッション(この例では 09:30-16:00)以外の場合、バーの時間をUNIX時間のミリ秒、またはNaN値で返します。

time 関数には2つの引数があります。1つ目は 'resolution' で、バーのタイムスタンプを決定します。2つ目は 'session' です。こちらは(取引所のタイムゾーンで)トレードセッションの開始時間と終了時間を文字列で指定します。文字列 "0930-1600" は、銘柄IBMのトレードセッションに対応しています。

トレードセッション設定の例:

“0000-0000” — 深夜0時に開始の24時間セッション
“1700-1700” — 17時に開始の24時間セッション
"0900-1600,1700-2000" — 9時に開始、16時から17時は休憩、20時に終了するセッション
"2000-1630" — オーバーナイトセッション。20時に開始され、翌日16時30分に終了
“0930-1700:146” - 日曜日(1)、水曜日(4)、金曜日(6)の9時30分に始まり、17:00に終わるセッション。週の他の日はオフ

関数 time でのセッションの指定は、チャートに適用された銘柄の実際のトレードセッションと一致する必要はありません。「仮説的」なセッション指定を行うことができ、データ系列の特定のバーを強調する事ができます。

関数 time ではカスタムセッションの指定をスキップすることもできます。この場合、内部的には、該当銘柄の通常のセッションが利用されます。

例えば次の様に、分足チャートで毎時30分のバーの開始を示すことができます。

study("new 30 min bar")
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? 1 : 0
plot(is_newbar("30"))

Chart time 2.png

関数 is_newbar は前の例と同様に多くの状況で使用できます。例えば、マーケット開始時の高値と安値をイントラデイチャートに表示するといった場合です。

//@version=3
study("Opening high/low", overlay=true)

highTimeFrame = input("D", type=resolution)
sessSpec = input("0930-1600", type=session)

is_newbar(res, sess) =>
    t = time(res, sess)
    na(t[1]) and not na(t) or t[1] < t

newbar = is_newbar("1440", sessSpec)
s1 = na
s1 := newbar ? low : nz(s1[1])
s2 = na
s2 := newbar ? high : nz(s2[1])

plot(s1, style=circles, linewidth=3, color=red)
plot(s2, style=circles, linewidth=3, color=lime)


Chart time 3.png

上のコードで変数 highTimeFramesessSpec に注意してください。それらは関数 input を用いて特別な方法で定義されています。インジケーターへの値の入力についての詳細情報は input変数 で確認できます。

セッションフォーマットの例

  • 24x7 - すべての日の00:00から00:00のセッション
  • 0000-0000:1234567 - 24x7 と同じ
  • 0000-0000:23456 - 0000-0000 と同じ。月曜から金曜日の00:00から翌日00:00のセッション。
  • 1700-1700 - オーバーナイトセッション。月曜日のセッションは日曜日の17:00に開始され、月曜日の17:00に終了する。こちらも月曜日から金曜日のみ。
  • 1000-1001:26 - 月曜日(2)と金曜日(6)に1分だけの奇妙なセッション。

時間を扱う為のビルトイン変数

Pineの標準ライブラリには、スクリプトで引数などに利用可能な、時間を扱うための様々なビルトイン変数があります。

  • time — 現在のバーのUNIX時間(ミリ秒単位)(タイムゾーンはUTC)
  • year — 現在のバーの年
  • month — 現在のバーの月
  • weekofyear — 現在のバーがその年の何週目であるか
  • dayofmonth — 現在のバーが月の何日目であるか
  • dayofweek — 現在のバーが週の何番目であるか。日曜日月曜日火曜日水曜日木曜日金曜日土曜日 のそれぞれの変数も利用できます
  • hour — 現在のバーの時間。
  • minute — 現在のバーの分
  • second — 現在のバーの秒

こちらはビルトイン関数です。

  • year(x) — UTC時間の年を返します
  • month(x) — UTC時間の月を返します
  • weekofyear(x) — UTC時間でその年の何週目かを返します
  • dayofmonth(x) — UTC時間で月の何日目かを返します
  • dayofweek(x) — UTC時間で曜日を返します
  • hour(x) — UTC時間の時間を返します
  • minute(x) — UTC時間の分を返します
  • second(x) — UTC時間の秒を返します

これらの変数と関数はすべて、取引所のタイムゾーンの時間 を戻します。ただし、time 変数だけは、UTCタイムゾーンの時間を戻します。


前の項目: ビルトイン変数 "barstate" でバーの状態を利用する, 次の項目: 通常セッションと時間外セッション, メニューに戻る: Pineスクリプトチュートリアル