アラートで変数を利用する方法は?
アラートメッセージで変数の値にアクセスする為に特別なプレースホルダーを利用する事ができます。例えば NASDAQ:AAPL でアラートを作成してメッセージ欄に以下の様に入力するとします:
{{exchange}}:{{ticker}}, 価格 = {{close}}, 出来高 = {{volume}}
その後アラートがトリガーされると対応する値を取得できます:
利用可能なプレースホルダーの一覧は以下の通りです:
1. {{ticker}} - アラートで使用されているシンボルのティッカー(AAPL, BTCUSDなど).
2. {{exchange}} - アラートで使用されているシンボルの取引所(NASDAQ, NYSE, TSEなど)。遅延データのシンボルの場合、取引所の末尾が “_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
- plotshape
- plotchar
- plotarrow
- plotbar
- plotcandle
こうした関数の引数の系列にBoolean値が含まれる場合、通知メッセージでは0または1に置き換えられます。特定の関数 - plotcandle と plotbar - はそれぞれ4つの系列を表示しますが、それら4つの系列のひとつずつすべてがナンバリングのロジックで考慮される事にご注意ください。
しかしplotにアクセスするこの方法は必ずしも便利とは言えません。そこでより簡潔にする為に、それぞれの名称でplotを呼び出す事をサポートしています。これを行うにはプレースホルダーの {{plot("Name")}} を使用します。ここで Name は系列の名前です。
内蔵インジケーターの場合、サポートされる名前は英語版で使用される名前のみです。以下は出来高インジケーターで名前を利用して系列にアクセスする例です。メッセージは以下の様になります:
出来高: {{plot("Volume")}}, 出来高の平均: {{plot("Volume MA")}}
同様にPineスクリプトで系列にアクセスするには、対応する関数のタイトル引数の名前を指定する必要があります(plotcandle と plotbar を除くすべてのplot関数でサポートされています)。この場合言語の限定はありません。スクリプトのコードにアクセスできない場合には名前をスタイル設定で確認することができます。
例えばこのスクリプトの値にアクセスするには:
//@version=4
study("My script")
plot(close, title="series")
アラートのメッセージに {{plot("series")}} を含めます。
スクリプトの設定でも同じ名前を確認することができます:
一つのアラートで複数のインジケーターを利用する場合、最初のインジケーターの値(最初のドロップダウンリストで指定されたインジケーター)が参照可能です。以下の例をご覧ください。
このアラートの設定の場合、MAの値のみ参照可能です。スクリプト “My script” の値にアクセスするには、最初のドロップダウンリストで “My script” を選択する必要があります。
alertcondition関数のメッセージ引数でこの新たなプレースホルダーを指定することもできます。例:
//@version=4
study("My script")
alertcondition(close>open, message="price {{ticker}} = {{close}}")
alertcondition関数の引数のメッセージは、アラート作成ダイアログのメッセージ欄に自動的に取り込まれます。
注: alertcondition関数で条件付きのアラートを作成する場合、値の置換はPine v4以降のスクリプトでのみ動作します。
トリガーされたアラートの値は、メッセージの変数値を目的のアドレスに送信することによってWebhookと一緒に使用できます。または "TradingView Alerts to MT4/MT5" の様な動的な値を利用する既存の外部のサードパーティアプリを利用する方法もあります。いくつかの構文のユースケースはこのサンプルスクリプトで確認できます。これによりアラートを使用するユーザーにとってさらなる可能性が広がります。