{{tag>pine pine初心者 pine基礎}}
====== 🔰Pine スクリプトの仕組みをざっくりと理解する ======
{{INLINETOC}}
===== Pine スクリプトにおけるインジケーターとストラテジーの違い =====
Pine スクリプトにおけるインジケーターと[[https://www.tradingview.com/pine-script-docs/en/v5/concepts/Strategies.html#pagestrategies|ストラテジー]]の違いをざっくりとまとめる。
==== ストラテジー ====
* ヒストリカルデータのバックテストや市場でのフォワードテストに使用できる。
* インジケーターの計算処理を含むのに加えて、Pine スクリプトのブローカーエミュレーターに対する操作(注文送信など)を含み、その実行をシミュレートすることができる。
* ブローカーエミュレーターに対する操作は ''strategy.*()'' 組み込み関数群で行う。
* バックテスト結果はチャート下部の "ストラテジーテスター" タブに表示される。
==== インジケーター ====
* インジケーターの計算処理を含む。
* バックテストには使用できない。
* ブローカーエミュレーターを操作しないため、使用リソースが少なく、動作が速い。
* その分、ストラテジーでもインジケーターでもどちらでもよいケースにおいてはインジケーターを使用する方が有利。
==== 共通事項 ====
* オーバーレイ・モード(チャートに重ねて表示するモード)またはペイン・モード(チャートの下または上の独立したセクションに表示するモード)で実行できる。
* 各モードに応じた領域に対して情報をプロットすることができる。
* [[https://www.tradingview.com/pine-script-docs/en/v5/concepts/Alerts.html#pagealerts|alert イベント]]を生成することができる。
===== スクリプト実行の仕組み =====
* Pine スクリプトの実行環境では、**スクリプトはチャートの左から右へ各ローソク足につき 1 回ずつ実行される。**
* スクリプトが実行されるときに既に確定しているローソク足のことをヒストリカルバー (historical bars) と呼ぶ。
* ヒストリカルバー上の実行が最右端に達し、市場がオープンしているとき、リアルタイムバー (realtime bar) 上の実行に移る。
* リアルタイムバー上では、**スクリプトは価格または出来高の変化が検出されるたびに 1 回実行される。またそのリアルタイムバーが閉じるときにも 1 回実行される。** (※1)\\ **ただし、(インジケーターと異なり)ストラテジーは、リアルタイムバーが閉じるときの一度だけ実行される。** (※2)
※1. スクリプトは価格または出来高の更新ごとに、チャートのすべてのヒストリカルバーで再計算をするわけではない。詳細は [[:tradingview:pine:execution_model|]] のページを参照。\\
※2. 必要であれば、価格または出来高の更新ごとに実行するように設定することもできる。詳細は[[https://www.tradingview.com/pine-script-docs/en/v5/concepts/Strategies.html#pagestrategies|ストラテジー]]のページを参照。
* リアルタイムバーは閉じられると "経過したリアルタイムバー" (elapsed realtime bar) となる。
* ''close'' 組み込み変数は、ヒストリカルバー上ではその足の**終値**を、リアルタイムバー上では**銘柄の現在価格**を返す。
===== 時系列 (time series) =====
* [[:tradingview:pine:time_series|]] は、Pine スクリプトで扱う主たるデータ構造。
* 時系列には、スクリプトが実行されるローソク足ごとに 1 つの値を含む。
* スクリプトがより多くの足で実行されるにつれて、時系列は継続的に拡張されていく。
* 時系列の過去値は、履歴参照演算子 (history-referencing operator) ''[]'' を使用して参照する。\\ 例えば ''close[1]'' は、スクリプトが実行されている足の 1 つ前の足の終値を指す。このインデックス機構は多くのプログラマーに配列 (array) を連想させるかもしれないが、配列とは異なるものである。
===== 参考 =====
* Pine Script® v5 User Manual [[https://www.tradingview.com/pine-script-docs/en/v5/primer/Next_steps.html|Next steps]]