Pineのコードは、まず使うバージョンを書き、次にこれは「ストラテジー」だと宣言することから始まります。ストラテジーは売買して損益を出すもの、という意味です(売買せずチャートに線を引くだけの「インジケーター」とは別物です)。

Pine Script:先頭の宣言
//@version=6
strategy("月末ロング (簡易ToM)", overlay=true,
     default_qty_type=strategy.fixed, default_qty_value=1)

//@version=6 は「Pineのバージョン6で書く」という決まりの1行。overlay=true は売買をローソク足チャートの上に重ねて表示する指定、default_qty_value=1 は1回の売買数量を1にする指定です。

組み込み変数と「足ごとに動く」考え方

Pineの一番の特徴は、コードが左端のローソク足から右端まで、1本ずつ自動でたどりながら実行されることです。MQL5の OnTick のように自分で繰り返しを意識しなくても、Pineが勝手に各足でコード全体を1回ずつ走らせます。

そのとき、次のような組み込み変数が、今たどっている足の値に自動で変わります。

買い 決済 各足でコードを1回ずつ実行(close・dayofmonth が今の足の値に)
Pineは足を1本ずつたどり、各足でコードを走らせる。条件が満たされた足で売買が起きる
各ローソク足で同じ条件式を順番に評価する
Pine Scriptは、チャート上の足を左から右へたどりながら条件を再計算します。

if文で条件を書く

Pineのif文は、MQL5と考え方は同じで「もし〜なら〜する」です。ただし波かっこ { } を使わず、字下げ(インデント)で範囲を表すのが大きな違いです。条件の下の行を半角スペースで下げると、それが「if の中身」になります。

Pine Script:if文(字下げで範囲を表す)
if dayofmonth >= 25
    strategy.entry("Long", strategy.long)

2行目の頭の空白(インデント)が「if の中身」の印。MQL5の { } の代わりです。条件を囲むかっこ ( ) も不要です。

条件の組み合わせは、記号ではなく英単語で書きます。「かつ」は and、「または」は or です。

Pine Script:条件の組み合わせ
if dayofmonth >= 3 and dayofmonth <= 15
    strategy.close("Long")

strategy.entryとstrategy.close

売買の命令は2つだけ覚えれば足ります。

Pineの約定は「次の足の始値」が既定

ここは第10回で効いてくる重要な違いです。Pineで strategy.entry() がある足で実行されても、実際に約定するのは既定では「次の足の始値」です。「今の足の終値で判定して、次の足の頭で約定」という動きになります。 一方、後で見るPythonの実装では「その足の終値で約定した」と計算します。同じルールでも、約定の瞬間が1本ぶんずれる。これが3環境で結果がずれる原因の1つです。今は「Pineは次の足の頭で約定するのが既定」とだけ覚えておけば十分です。

どこに書いて、どう動かすか

Pineは、TradingViewの画面下部にあるPineエディタに書きます。書いたら「チャートに追加」を押すと、そのストラテジーがチャートに適用され、下部のストラテジーテスタータブに損益・勝率・最大ドローダウンなどが表示されます。MT5のストラテジーテスターと役割は同じです。

環境構築はほぼ不要で、ブラウザだけで完結します。ただし新しいコードを書くときは、既存のスクリプトを上書きしないよう、必ず「新規作成」から始めるのが安全です。詳しい画面操作は「TradingViewの基本設定」を参照してください。

チェックリスト

次の記事に進む前に、以下が自分の言葉で説明できるか確認してください。

ミニテスト

最後に3問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。

Q1. Pine Scriptのif文で「中身」の範囲を表すのは?

Pineは波かっこを使わず、条件の下の行を字下げすることで「if の中身」を表します。MQL5の { } にあたる役割です。

Q2. Pineで「かつ」を表すのは?

Pineは記号ではなく英単語で書きます。「かつ」は and、「または」は or。MQL5の && にあたります。

Q3. Pineの strategy.entry() について、既定の約定タイミングは?

Pineは既定で「今の足で判定して、次の足の始値で約定」します。後で見るPythonは終値で約定と計算するため、同じルールでも約定が1本ぶんずれます(第10回で扱います)。