【Pine Script】TradingViewで簡単に作れる複数条件アラートの作成方法・手順
TradingViewで複数の条件を満たした場合にアラートを発生させることって可能なの?
Pine Script でアラートイベントを含むインジケーター or ストラテジーを作成することで可能です
各FX会社が提供しているトレードプラットフォームではアラート機能を搭載しているものも存在するが、どこも(私の知る限り)アラートの設定は価格や経済指標に対してしか対応していないと思う
しかし、TradingView(トレーディングビュー)では価格に対してだけではなく、チャートに追加したインジケーターや、手動で描画したトレンドラインなどを使用してアラートを設定することが可能と、かなりカスタマイズ性の高いアラート機能が搭載されている
参考記事: TradingView(トレーディングビュー)のアラート機能を活用する方法 (OANDAラボ)
更に TradingView では、専用に開発されたプログラミング言語 Pine Script
を用いて、インジケーター(またはストラテジー)を作成することで
インジケーターを自作することで可能になることの例
- 短期、中期、長期 3本の移動平均線+α のテクニカル指標をチャート上に追加
- 価格が長期移動平均線よりも上 + 短期移動平均線が中期移動平均線を上に交差(ゴールデンクロス)した際にアラート通知
などといった、複数のテクニカル指標を1つのインジケーターでチャートに追加したり、複数の条件を満たした際にアラートを発生させるといったことも可能になる
TradingViewが開発したプログラミング言語 Pineスクリプトとは?
TradingView でのインジケーター表示可能数は、無料プランだと最大3つまで、有料プランでもランクに応じて最大5つまで〜と制限があるが、Pine Script でインジケーターを作成することで、たとえ無料のBasicプランであっても3つを大きく超える数のテクニカル指標をチャートに表示させることも可能となる
今回はタイトルの通り、オンラインチャートツール TradingView で Pine Script v5
を用いて複数の条件を満たした場合にアラートを発生させるインジケーターの作成方法と、インジケーターを使ってアラート登録する手順について、詳しく紹介していく
個人的にPine Script
は最も難易度の低いプログラミング言語といえるくらい他言語と比較しても理解しやすいと感じているので、プログラミングについて知識・経験が全くない方や、過去にMT4のMQL4
で挫折してしまったという方でも問題ない(と思う)
TradingView におけるインジケーターとストラテジーの違いについて
まずはじめに、TradingView ではPine Script
を用いて、インジケーターまたはストラテジーを作成することができ、どちらも独自のアラート条件を作成可能だが、これら2つの違いは必ず知っておくべきだと思うので、最初に記載しておく
indicator (インジケーター) の特徴
- ストラテジーに比べて使用するリソースが少なく、高速に実行される
- バックテストはできない
strategy (ストラテジー) の特徴
- 主にヒストリカルデータでのバックテスト、フォワードテストに使用
- インジケーターとは異なり、バーのクローズ時に1回だけ実行される
要は「バックテストを行って結果レポートを確認したい場合はストラテジー」「トレード用にアラートシグナルを作成したい場合はメモリ消費が少ないインジケーター」を作成して使用するのが良いということになる
参照ページ: Pine Script™ v5 User Manual “indicators” vs “strategies”
今回作成するアラートインジケーターの概要とヒント
まず今回作成するサンプル アラートインジケーターの概要(ロジック)について
作成するサンプル アラートインジケーターの概要(ロジック)
- フィルターとして買いエントリーは日足の長期移動平均線よりも価格が上の場合のみ
- 短期、中期 単純移動平均線(SMA)のゴールデンクロスで買いエントリーのアラート
- デッドクロスで買いポジション決済のアラート
- アラートインジケーターは全ての時間足に対応
このようにシンプルなロジックながら、複数の条件を満たし場合にアラートを発生されるサンプルインジケーターを作成する手順を紹介していく
🔽 完成したインジケーターを日足チャートに追加すると以下のように表示される
ちなみに、アラート通知させるには インジケーターをチャートに追加した後、アラート作成ダイアログから登録することではじめてアラートが発生 するようになる
あとPine Script
のコードを書くにあたって、何度も確認することなる公式ドキュメント Pine Script v5 User Manual は英語表記のみとなっている為、英字文章を読むのに慣れていない方は DeepL などの翻訳サービスをブラウザ拡張機能に追加すれば、選択したテキスト箇所をワンクリックで翻訳してくれるのでオススメ!
私も英語の読み書きに関してはあまり得意ではないので、DeepL をよく利用している
Pine Script
コード
Step1. 短,中,長期 3本の移動平均線をチャート上に表示するインジケーター TradingView デスクトップアプリ版 or ウェブブラウザ上で チャート下部の Pine エディタ
タブをクリックし、開く
から 新規作成-インジケーター
をクリックすると
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © USER_NAME
//@version=5
indicator("マイスクリプト")
plot(close)
このような Pine Script コードがデフォルトで記述されていると思う(このコードのままチャートに追加する
をクリックすると、メインチャート下部に別のチャート枠(ペイン)で各バー終値の線グラフが表示される)
このPine Script
コードを
// ... 省略
//@version=5
indicator(title="Myサンプルアラート", overlay=true)
// =====================
// SMA & EMA
// =====================
// 各移動平均線 入力プロパティ
period_SMA_1 = input(title='SMA_1期間', defval=5)
period_SMA_2 = input(title='SMA_2期間', defval=14)
period_EMA = input.int(title='EMA期間', defval=200)
// 各移動平均
SMA_1 = ta.sma(close, period_SMA_1)
SMA_2 = ta.sma(source=close, length = period_SMA_2)
// 日足ベースの指数平滑移動平均
EMA = request.security(symbol=syminfo.tickerid, timeframe="D", expression= ta.ema(close, period_EMA))
// =====================
// チャート上に表示(plot)
// =====================
plot(SMA_1, title='SMA_1', color=color.rgb(242, 0, 0), linewidth=2)
plot(SMA_2, 'SMA_2', color.blue)
plot(EMA, title='EMA', color= color.new(color.green, 20))
に書き換えて、チャートに追加する
をクリックすると全ての時間足でメインチャート上に短,中,長期 3本の移動平均線が表示される
以下、ここまで記載したコード内容について細かく解説していく
overlay=true でインジケーターをメインチャート上に表示
indicator(title="Myサンプルアラート", overlay=true)
オプション引数 overlay
を true にすることで、インジケーターを別枠(ペイン)ではなくメインチャート上に表示するように設定
input() で設定「パラメーター」タブに項目として追加
period_SMA_1 = input(title='SMA_1期間', defval=5)
period_SMA_2 = input(title='SMA_2期間', defval=14)
period_EMA = input.int(title='EMA期間', defval=200)
インジケーターの設定 「パラメーター」タブに各移動平均線の期間を項目として追加し、変更可能にするためのもので、オプション引数 defval
ではデフォルト値を設定している
request.security() で固定時間足の移動平均値を算出
// 各移動平均
SMA_1 = ta.sma(close, period_SMA_1)
SMA_2 = ta.sma(source=close, length = period_SMA_2)
// 日足ベースの指数平滑移動平均
EMA = request.security(symbol=syminfo.tickerid, timeframe="D", expression= ta.ema(close, period_EMA))
SMA_1, SMA_2 には 1つ前に解説したコードの変数 period_SMA_1
, period_SMA_2
に代入したデフォルト値 5, 14 の期間を使って単純移動平均の値を算出した結果を代入
EMA はフィルター用 日足ベースの長期移動平均線の値で、ビルトイン関数 request.security(symbol, timeframe, expression) を用いて、全ての時間足チャート共通で日足ベースのEMA(指数平滑移動平均)の値を算出したものを代入している
plot() で各移動平均線をチャート上に色を指定して表示
// チャート上に表示(plot)
plot(SMA_1, title='SMA_1', color=color.rgb(242, 0, 0), linewidth=2)
plot(SMA_2, 'SMA_2', color.blue)
plot(EMA, title='EMA', color= color.new(color.green, 20))
- 短期SMA
SMA_1
を赤色 & linewidth=2 を指定することで、少し太めに設定 - 中期SMA
SMA_2
は青色 - 日足ベースの長期EMA
EMA
は color.new() で、少し透明な緑色で表示するように設定
補足として、title=
などの引数パラメーター名は書いても書かなくてもOKだし、=
の前後に半角スペースを設けてもOK
Step2. 長期移動平均線の表示・非表示を時間足で指定 & チャートに背景色を追加(オプション)
ここまでのコードだと、長期移動平均線(200日EMA)が1時間や5分足などの短い時間足を含む全ての時間軸で表示されてしまう
これには少し問題があって、例えば長期移動平均線(200日EMA)と現在の価格が大きく離れている場合に、15分足などの短い時間軸でチャートを表示すると
↑のようなチャート表示になってしまう
インジケーター 設定のスタイル
タブで、EMAからチェックを外せば非表示にできるが、日足や週足のチャートでは長期EMAも表示させたいといった場合、その都度設定のスタイル
タブを開いてEMAのチェックをオン・オフを行う必要があり不便に感じると思う
この問題へ対処するための修正点
- 日足、週足、月足以外 = 4時間足以下の時間軸チャートでは長期移動平均線(200日EMA)を非表示
- 全ての時間軸において、フィルター条件である長期移動平均線(200日EMA)よりも価格が上の期間のみ薄い青色の背景色を適用
以下、修正したコード箇所
// ... 省略
// =====================
// チャート上に表示(plot)
// =====================
plot(SMA_1, title='SMA_1', color=color.rgb(242, 0, 0), linewidth=2)
plot(SMA_2, 'SMA_2', color.blue)
// plot(EMA, title='EMA', color= color.new(color.green, 20))
// => 日足、週足、月足の場合にのみ表示
plot(timeframe.isdwm ? EMA : na, title='EMA', color=color.new(color.green, 20))
/// 背景色 ///
bgcolor(close >= EMA ? color.new(color.blue, 95) : na) // 価格がEMAより上の場合、薄い青色の背景色
日足ベースの長期移動平均線を4時間足以下では非表示に設定
// => 長期EMAは 日足、週足、月足チャートの場合にのみ表示するように変更
plot(timeframe.isdwm ? EMA : na, title='EMA', color=color.new(color.green, 20))
上記コードでは、ビルトイン変数の timeframe.isdwm で現在の時間足が日足、週足、月足のいずれかであるかをtrue
or false
で取得し、true
の場合はEMAを表示、false
の場合は na
(=値の割り当てなし)で、非表示にしている
上記コードは三項条件演算子? :
を使って1行で書いているが、もしこの部分が分かりにくいと感じる場合は
// 4時間足以下の場合、EMAに na を代入
if timeframe.isdwm == false
EMA:= na
plot(EMA, title='EMA', color=color.new(color.green, 20))
↑のように if文で複数行に分けて書いてもOK
長期移動平均線(200日EMA)よりも上で価格が推移している期間にのみ背景色を設定
// ... 省略
/// 背景色 (オプション)///
bgcolor(close >= EMA ? color.new(color.blue, 95) : na) // 価格がEMAより上の場合、薄い青色の背景色
ビルトイン関数 bgcolor() で、価格がEMA 以上の場合は透明度の高い青色の背景色、EMA以下の場合は na
(=値の割り当てなし)を設定
先程と同様に、三項条件演算子? :
を使って1行で書いているが、if文を使って分けて書いてもOK
Step3. アラート条件の定義 & アラートイベントとして追加
ゴールデンクロスでエントリー、デッドクロスでエグジット用のアラートを発生させる為に以下のコードを追加
// ... 省略
// ======================
/// アラート///
// ======================
// 各バーごとに初期化されない変数 has_long にロング ポジション保有中か否かを代入(初期値 false)
var bool has_long = false
// ロング エントリー ゴールデンクロス
bool long_entry_alertconditon = has_long == false and close >= EMA and ta.crossover(SMA_1, SMA_2)
if long_entry_alertconditon
has_long := true
// エントリー アラート①
alert('ゴールデンクロス エントリーアラート', freq= alert.freq_once_per_bar)
// ロング エグジット デッドクロス
bool long_exit_alertconditon = has_long and ta.crossunder(SMA_1, SMA_2)
if long_exit_alertconditon
has_long := false
// エグジット アラート①
alert('デッドクロス Exitアラート', freq= alert.freq_once_per_bar)
// アラート作成ダイアログで個別に設定可能なエントリーアラートイベントを作成
alertcondition(condition=long_entry_alertconditon, title='ゴールデンクロス アラート')
// アラート作成ダイアログで個別に設定可能なエグジットアラートイベントを作成
alertcondition(condition=long_exit_alertconditon, title='デッドクロス アラート')
ここでは alert()
と alertcondition()
2つの関数を用いてアラートイベントとして定義しているが、実際にはどちらか一方だけで構わない
アラート関数 alert() と alertcondition() について
アラート関数 alert() と alertcondition()
- 関数
alert()
は新しく追加された関数でインジケーター、ストラテジー両方で使用可能(アラート作成ダイアログ上でトリガー条件の選択、アラートメッセージを設定することはできない) - 関数
alertcondition()
はインジケーター用の関数で、アラートの作成ダイアログ上でトリガー条件の選択、メッセージを設定することができるため、1つのインジケーターで複数のアラートを個別に設定したい場合など有利
200日EMAよりも価格が上 + ゴールデンクロスした際をエントリーアラート発生条件として定義
// 各バーごとに初期化されない変数 has_long にロング ポジション保有中か否かを代入(初期値 false)
var bool has_long = false
var
は変数の1度限りの初期化や代入に用いられるキーワードで、このキーワードがついた変数に代入した値は各バーごとに初期化されず、if文で条件が満たされる時にだけ変更される
JavaScript 経験者の方は注意
ES5までのJavaScriptで変数を定義するときに使用されていた var
とは意味合いが大きく異なるので注意
今回作成するインジケーターは、ゴールデンクロス + 日足の長期移動平均線よりも価格が上の場合のみ買いエントリーというフィルター条件付きのロジックなので、デッドクロスで決済アラートを発生させる条件にポジション保有状態の確認が必要となる
ちなみに、bool
は変数 "has_long" の型が "bool" (ブール) であることを明示的に宣言するためのキーワードで na
で初期化される場合を除いて任意である為、このケースでは var has_long = false
と書いても問題ない
// ロング エントリーアラート条件 ゴールデンクロス
bool long_entry_alertconditon = has_long == false and close >= EMA and ta.crossover(SMA_1, SMA_2)
この行では、ブール型の変数 long_entry_alertconditon
を定義し、その値を算出するための条件を以下のように設定している
- 変数 has_long の値が false である(= 現在持っているロングポジションなし)
- 現在価格(close) が EMA (指数平滑移動平均) 以上
- 1つ前のバーの短期移動平均(SMA_1) が1つ前のバーの中期移動平均(SMA_2) 以下である
- 現在のバーにおける短期移動平均(SMA_1) が中期移動平均(SMA_2) より大きい = ゴールデンクロス
上記4つの条件がすべて満たされた時、変数long_entry_alertconditon
の値は true になり、それ以外では false
if long_entry_alertconditon
has_long := true
// エントリー アラート①
alert('ゴールデンクロス エントリーアラート', freq= alert.freq_once_per_bar)
条件を満たして long_entry_alertconditon
が true の時、 var変数 has_long
を false -> true (=ポジションあり)に更新し、 alert()
関数で、エントリー用 アラートイベントを作成
ロングポジション保有中にデッドクロスで決済アラート
// ロング エグジットアラート条件 デッドクロス
bool long_exit_alertconditon = has_long and ta.crossunder(SMA_1, SMA_2)
if long_exit_alertconditon
has_long := false
// エグジット アラート①
alert('デッドクロス Exitアラート', freq= alert.freq_once_per_bar)
ロング エントリーアラート条件と同様に、ブール型の変数long_exit_alertconditon
を定義し、その値を算出するための条件を以下のように設定
- 変数 has_long の値が true である(= 現在ロングポジション保有中)
- 1つ前のバーの短期移動平均(SMA_1) が1つ前のバーの中期移動平均(SMA_2) 以上である
- 現在のバーにおける短期移動平均(SMA_1) が中期移動平均(SMA_2) より小さい = デッドクロス
これら3つの条件がすべて満たされた時、変数long_exit_alertconditon
の値は true になり、それ以外では false
また、条件を満たして long_exit_alertconditon
が true の時、 var変数 has_long
を true -> false (=ポジションなし)に更新し、 alert()
関数で、エグジット用 アラートイベントを作成
アラート作成ダイアログでトリガー条件&メッセージを設定可能なイベントを追加
// アラート作成ダイアログで個別に設定可能なエントリーアラートイベントを作成
alertcondition(condition=long_entry_alertconditon, title='ゴールデンクロス アラート')
// アラート作成ダイアログで個別に設定可能なエグジットアラートイベントを作成
alertcondition(condition=long_exit_alertconditon, title='デッドクロス アラート')
alertcondition()
を使ってエントリー、エグジット用のアラートイベントを個別に追加
alertcondition()
によって作成されたこれらのアラートイベントは、アラート作成ダイアログ上で ゴールデンクロス アラート
, デッドクロス アラート
という名前で選択可能になり、それぞれ個別にトリガー条件ならびにアラートメッセージをダイアログ上から設定することが可能となる
Step4. アラート発生条件を満たしたバーの下部に視覚的な図形を描写
// ... 省略
// =====================
// アラート発生ポイント を チャート上に表示(オプション)
// =====================
// エントリーアラート発生のバー下部に視覚的な図形を描写
plotshape(long_entry_alertconditon, title='ロング エントリーアラート発生', style=shape.triangleup, location=location.bottom, color=color.new(color.blue, 20), size=size.small )
// エグジットアラート発生のバー下部に視覚的な図形を描写
plotshape(long_exit_alertconditon, title='ロング エグジットアラート発生', style=shape.triangleup, location=location.bottom, color=color.new(color.red, 20), size=size.small )
フィルター条件を満たしている期間に背景色を追加したのと同様、これも視覚的に判断しやすくするためのオプションとなるが、plotshape()
でチャート上のエントリーとエグジットそれぞれのアラート条件を満たしたバーの下部に視覚的な図形を描写している
Pine Script
コード(完成形)
インジケーターの ここまで紹介した手順で完成したインジケーターのPine Script
コード(完成形)は以下
// ... 省略
//@version=5
indicator(title="Myサンプルアラート", overlay=true)
// =====================
// SMA & EMA
// =====================
// 各移動平均線 入力プロパティ
period_SMA_1 = input(title='SMA_1期間', defval=5)
period_SMA_2 = input(title='SMA_2期間', defval=14)
period_EMA = input.int(title='EMA期間', defval=200)
// 各移動平均線の値を算出し、変数に代入
SMA_1 = ta.sma(close, period_SMA_1)
SMA_2 = ta.sma(source=close, length = period_SMA_2)
// 日足ベースの指数平滑移動平均
EMA = request.security(symbol=syminfo.tickerid, timeframe="D", expression= ta.ema(close, period_EMA))
// =====================
// チャート上に表示(plot)
// =====================
plot(SMA_1, title='SMA_1', color=color.rgb(242, 0, 0), linewidth=2)
plot(SMA_2, 'SMA_2', color.blue)
// plot(EMA, title='EMA', color= color.new(color.green, 20))
// => 日足、週足、月足の場合にのみ表示
plot(timeframe.isdwm ? EMA : na, title='EMA', color=color.new(color.green, 20))
/// 背景色 ///
bgcolor(close >= EMA ? color.new(color.blue, 95) : na) // 価格がEMAより上の場合、薄い青色の背景色
// ======================
/// アラート///
// ======================
// ロング 保有中
var bool has_long = false
// ロング エントリー ゴールデンクロス
bool long_entry_alertconditon = has_long == false and close >= EMA and ta.crossover(SMA_1, SMA_2)
if long_entry_alertconditon
has_long := true
// エントリー アラート①
alert('ゴールデンクロス エントリーアラート', freq= alert.freq_once_per_bar)
// ロング エグジット デッドクロス
bool long_exit_alertconditon = has_long and ta.crossunder(SMA_1, SMA_2)
if long_exit_alertconditon
has_long := false
// エグジット アラート①
alert('デッドクロス Exitアラート', freq= alert.freq_once_per_bar)
// アラート作成ダイアログで個別に設定可能なエントリーアラートイベントを作成
alertcondition(condition=long_entry_alertconditon, title='ゴールデンクロス アラート')
// アラート作成ダイアログで個別に設定可能なエグジットアラートイベントを作成
alertcondition(condition=long_exit_alertconditon, title='デッドクロス アラート')
// =====================
// アラート発生ポイント を チャート上に表示
// =====================
// エントリーアラート発生のバー下部に視覚的な図形を描写
plotshape(long_entry_alertconditon, title='ロング エントリーアラート発生', style=shape.triangleup, location=location.bottom, color=color.new(color.blue, 20), size=size.small )
// エグジットアラート発生のバー下部に視覚的な図形を描写
plotshape(long_exit_alertconditon, title='ロング エグジットアラート発生', style=shape.triangleup, location=location.bottom, color=color.new(color.red, 20), size=size.small )
作成したインジケーターでアラート登録する手順
最初の方でも書いたように、アラート通知させるにはインジケーターをチャートに追加するだけではダメで、アラート作成ダイアログで今回作成したアラート条件(イベント)を登録することで有効になる
手順1. チャートに作成したインジケーターを追加した状態でアラート作成ダイアログを開く
windows であれば Alt + a
キー、Macの場合は Option + a
キーを押すとアラート作成ダイアログが表示される
参考記事: TradingView(トレーディングビュー)のショートカットキー 一覧(OANDAラボ)
手順2. 条件のドロップダウンリストから作成したインジケーター名を選択
デフォルトではアラート作成ダイアログを表示させた時に開いているチャートのシンボル名が条件として選択されているが、作成したインジケーター名(今回の場合であれば ”Myサンプルアラート”)をクリックして選択
注意
作成したインジケーターをチャートに追加してからアラート作成ダイアログを開かないと、”Myサンプルアラート” は選択候補として表示されない
手順3. アラート条件(イベント)を選択
アラートの条件で今回作成したインジケーター”Myサンプルアラート”
を選択すると
⬆️のように"alert() 関数の呼び出し"
がデフォルトで選択されていると思う
このまま作成ボタンをクリックすると、alert() 関数
を使って定義したエントリー用アラート'ゴールデンクロス エントリーアラート'
, エグジット用アラート'デッドクロス Exitアラート'
それぞれが。1件のアラート登録で動作するようになる
alertcondition() で定義したアラートイベントを選択する場合
alertcondition() 関数
で定義したエントリー用アラート"ゴールデンクロス アラート"
、 エグジット用アラート"デッドクロス アラート"
を登録するには
デフォルトで"alert() 関数の呼び出し"
が選択されているドロップダウンリストをクリックすると、候補として表示される
⬆️のように、alertcondition() 関数
で定義したアラートイベントを選択した場合だと、トリガー条件, アラートメッセージもダイアログ上から個別に設定が可能
ただ、こちらの場合だとエントリー、エグジット用それぞれのアラートイベントが独立しているため、エントリー&エグジットの両方でアラートを通知させたい場合には計2件のアラート登録枠が必要になる
アラートイベントを作成する際にalert()
とalertcondition()
どちらの関数を利用するか?は用途次第かと思うが、個人的にはダイアログ上でトリガー条件、メッセージ内容を設定可能なalertcondition()
の方が好み
alert()
or alertcondition()
で定義したアラートイベントのどちらを選択しても、ダイアログで作成ボタンをクリックすれば、条件を満たした際にブラウザまたはデスクトップ版 TradingView 画面上でのポップアップ通知だけでなく、スマホアプリにもデフォルトでアラートが通知されるのでとても便利だ
ちなみに、アラートメッセージでは {{close}}
, {{ticker}}
などといった変数の値にアクセスする為に特別なプレースホルダーを利用する事が可能となっている
参考ページ: アラートで変数を利用する方法は?(ヘルプセンター)
Eメールへの送信やwebhook通知の設定は通知タブから
他にも通知タブで、スマホアプリへの通知オン・オフ、Eメールでの送信、webhook通知 などの設定が可能
ちなみに、このwebhook機能
を利用して自動売買を行うことも可能だが、webhook通知に関しては有料プラン限定の機能となっている
参考記事: TradingViewのアラート(Webhook)機能を用いて自動売買を行う際のAPI選択候補
さいごに
TradingView は無料プランであっても利用価値の高い素晴らしいチャートツールだと思うが、数多くある機能の中でも目玉機能であるアラートは無料プランだと価格、テクニカルに対するアラートがそれぞれ1件までしか登録できないため、このアラート機能を有効に活用したいなら有料プランへの加入はほぼ必須になってくる
私も現在 TradingView の有料プラン Essential
(旧Pro)を利用中だが、このアラート機能を活用したいが為に有料プランへ加入していると言っても過言ではない
参考記事: TradingView 有料プランで利用することにした決定的な理由
現在 TradingView を無料プランで利用中、もしくはまだ利用していないという方で、今回紹介した TradingView の超優秀なアラート機能に魅力を感じた方は、決して安い値段ではないものの 有料プランの利用を検討してみては如何だろうか
以上、今回はTradingView で複数の条件を満たした場合にアラートを発生させる方法として、カスタムインジケーターの作成〜アラート登録するまでの手順について、自分なりにできるだけ分かりやすく紹介したつもりだが、如何だったでしょうか?
もし今回記載した内容で、分かりにくかった箇所や間違っている箇所などがあれば、ご指摘下さい。