みなさんこんにちは、サバイサバイFXです。
今回はTradingViewのインジケーター開発言語であるPine Scriptに関する注意点を解説します。
タイトルの通り、Security関数では下位足のデータを"正しく"取得できないという制約についてです。
先日Pine ScriptでTradingViewのインジケーター開発をしていたとき、下位足のデータを表示する必要性に迫られ、Security関数を用いてデータ取得ロジックを構築しました。
ですが、完成したインジケーターの結果を見ても、どうも正しいデータが表示されないという問題があり、色々と調べていたら下位足データ取得にSecurity関数を用いると正しいデータが得られないということがわかりました。
TradingViewのページでも以下の通り説明がされています。
Requesting data of a lower timeframe
It is not recommended to request data of a timeframe lower that the current chart timeframe, for example 1 minute data from a 5 minutes chart. The main problem with such a case is that some part of a 1 minute data will be inevitably lost, as it’s impossible to display it on a 5 minutes chart and not to break the time axis. In such cases the behavior of
security
can be rather unexpected. The next example illustrates this:(筆者訳)下位の時間軸データを取得することは推奨されていません。例えば5分足チャートから1分足のデータを要求するなどです。この場合の主な問題は、1分のデータを時間軸を超えて5分チャートに表示できないために、1分足のデータが部分的に失われることが避けられないということです。このようなケースにおいてはSecurity関数の挙動は予想できないものとなります。
元々、Security関数は上位時間足のデータを取得するための関数。
下位足データを取得しようとすると、うまく表示できないという制約があるようです。
下位足は上位足の方向性に影響を受ける、という相場の原則を踏まえれば、この仕様は頷けるものと言えます。
一般的には上位足から下位足を参照するというケースはあまりないですからね。
とは言っても僕が直面したように、インジケーター開発で下位足のデータを取得する必要性がある時にはどうしたら良いのか?という点ですが、現在のところソリューションは見当たらず。
ここは今後のアップデートに期待でしょう。