アラートで変数を利用する方法は?

特別なプレースホルダーを利用してアラートメッセージで変数の値を利用することができます。たとえば、NASDAQ:AAPL でアラートを作成してメッセージ欄に以下のように入力するとします:

{{exchange}}:{{ticker}}, 価格 = {{close}}, 出来高 = {{volume}}

その後アラートがトリガーされると対応する値を取得できます:

利用可能なプレースホルダーの一覧は以下のとおりです:

1. {{ticker}} - アラートで使用されているシンボルのティッカー(AAPL, BTCUSDなど).

2. {{exchange}} - アラートで使用されているシンボルの取引所(NASDAQ, NYSE, CMEなど)。遅延データのシンボルの場合、取引所の末尾が “_DL” や “_DLY” になることにご注意ください。例.“NYMEX_DL”。

3. {{close}}, {{open}}, {{high}}, {{low}}, {{time}}, {{volume}} - アラートがトリガーされたバーに対応する値。インジケーターや非標準チャート、描画に対するアラートは時間足に依存します。一方単純な価格アラート(例.価格が特定の値を交差)は常に1分足で計算されます。{{time}}はUTCで yyyy-MM-ddTHH:mm:ssZ の形式でフォーマットされます。例.2019-08-27T09:56:00Z。他の値は、整数部分と小数部分を区切る小数点がある固定小数点数です。例.1245.25。

4. {{timenow}} - アラートのトリガー日時(つまり現在時刻です)。{{time}}と同じ形式でフォーマットされます。時間足に関わらず最も近い秒の時間を戻します。

5. {{plot_0}}, {{plot_1}}, ... {{plot_19}} - アラートで用いられるインジケーターの対応するアウトプット系列。0からナンバリングされることにご注意ください。また最大のplot IDは19です(アウトプット系列の最初の20個にのみアクセスが可能です)。 アウトプット系列はチャートで見ているインジケーターの値です。たとえば、内蔵の出来高インジケーターには2つのアウトプット系列があります: 出来高と出来高のMA。出来高インジケーターにアラートを作成して、メッセージ欄に以下のように入力できます:

出来高 = {{plot_0}}, 出来高の平均 = {{plot_1}}

6. {{interval}} - アラートが作成されたチャートの時間足(タイムフレーム)を返します。技術的な理由により、このプレースホルダーは場合によってはチャートの時間足ではなく “1” を返す事にご注意ください。通常の価格ベースのアラート(例えば “AAPLが120を交差” や “AMZNが3600より大きい” などの条件)はすべて、シンボルの最後の値に基づくため、チャートの時間足はアラートに関連しません。その為、すべての価格ベースのアラートは実際には1分足で計算され、プレースホルダーもそれに応じて常に “1” を返します。またレンジチャートも1分足のデータに基づき計算される為、レンジチャートで作成されたアラートの場合も、{{interval}} のプレースホルダーは常に “1” を返します。描画やインジケーターに作成されたアラートでは、このプレースホルダーは期待通りに動作します。

7. {{syminfo.currency}} - 現在のシンボルの通貨コードを返します (“EUR”, “USD”など)。

8. {{syminfo.basecurrency}} - シンボルが通貨ペアに関するものである場合に、現在のシンボルの基準通貨コードを返します。そうでない場合には na を返します。たとえば、シンボルが “EURUSD” であれば “EUR” が返されます。

"strategy" プレフィックスのプレースホルダーは、ストラテジーアラートでのみご利用可能です:

  • {{strategy.position_size}} - Pineの同じキーワードの値を返します。つまり現在のポジションサイズです。
  • {{strategy.order.action}} - 実行された注文の文字列 “buy” または “sell” を返します。
  • {{strategy.order.contracts}} - 実行された注文の取引数を返します。
  • {{strategy.order.price}} - 注文が実行された価格を返します。
  • {{strategy.order.id}} - 実行された注文のIDを返します(注文を生成するいずれかの関数 - strategy.entry, strategy.exit または strategy.order - の呼び出しで最初のパラメーターとして用いられている文字列)。
  • {{strategy.order.comment}} - 実行された注文のコメントを返します(注文を生成するいずれかの関数 - strategy.entry, strategy.exit または strategy.order - の呼び出しの際にコメントパラメーターで用いられている文字列)。コメントの指定が無い場合には、strategy.order.id の値が利用されます。
  • {{strategy.order.alert_message}} - 発注に用いられるいずれかの関数 - strategy.entry, strategy.exit または strategy.order - が呼び出される際にストラテジーのPineコードで用いられるアラートメッセージパラメーターの値を返します。この機能は、Pine v4以降でのみサポートされます。
  • {{strategy.market_position}} - ストラテジーの現在のポジションを文字列の形式 - “long”, “flat” または “short” - で返します。
  • {{strategy.market_position_size}} - 現在のポジションサイズを絶対値で、つまり正の値で返します。
  • {{strategy.prev_market_position}} - ストラテジーの前のポジションを文字列の形式 - “long”, “flat” または “short” - で返します。
  • {{strategy.prev_market_position_size}} - 前のポジションサイズを絶対値で、つまり正の値で返します。

アラートがトリガーされると対応する値を確認できます:

Pineで書かれたスクリプトのplot系関数で利用可能なものは以下のとおりです:

  • plot;
  • plotshape;
  • plotchar;
  • plotarrow;
  • plotbar;
  • plotcandle.

プレースホルダー {{plot_0}}, {{plot_1}}, ... {{plot_19}} を使うだけでなく名前による認識も可能です。これを行うには、プレースホルダー {{plot("Name")}} を使用します。ここで "Name" はその系列の名前です。たとえば、plotarrow関数の場合は以下のとおりです:

//@version=6
indicator('My script')
plotarrow(close, colorup=color.new(color.teal,40), colordown=color.new(color.orange, 40) , title = 'arrow')

通知文に {{plot("arrow")}} を追加します

plotcandle関数とplotbar関数は、それぞれ4つの系列(始値、高値、安値、終値)を表示するため、名前による系列へのアクセスには対応していません。各系列に対しては、番号によって適切に区別されたプレースホルダーを使用できます。

内蔵インジケーターの場合、使用可能なプレースホルダーは英語版で使用される系列名のみです。以下は出来高インジケーターの例です:

出来高: {{plot("Volume")}}、出来高の平均: {{plot("Volume MA")}}

アラート内で複数のインジケーターが使用されている場合は、最初のインジケーターの値のみが {{plot}} プレースホルダーに代入されます:

上記の例では、“My script1” インジケーターの系列値がプレースホルダーに代入されます。“My script2” インジケーターの値を表示するには、これを最初のドロップダウンメニューで選択します。

プレースホルダーは alertcondition関数の引数であるmessageで指定することもできます。アラートを作成すると、この引数の値が自動的にアラートのテキスト入力ボックスに引用されます。

//@version=6
indicator("alertcondition", overlay=true)
alertcondition(close >= open, title='Alert', message='"price {{ticker}} = {{close}}"!')

alertcondition関数から条件指定してアラートを作成する場合、値の置換が機能するのはバージョン4 (Pine v4)以降で書かれたスクリプトのみです。

トリガーされたアラートの値は、メッセージの変数値を目的のアドレスに送信することによってWebhookと一緒に使用できます。または "TradingView Alerts to MT4/MT5" の様な動的な値を利用する既存の外部のサードパーティアプリを利用する方法もあります。構文の使用例はこちらのサンプルスクリプトで確認できます。これでアラートを使用するユーザーには可能性がさらに広がります。