導入
適切な取引ツールがなければ、効果的なテクニカル分析を行うことはできません。強力な取引戦略は、よくある間違いを回避し、リスク管理を改善し、機会を特定して活用する能力を高めるのに役立ちます。
多くの人にとって、TradingView は頼りになるチャート プラットフォームです。テクニカル分析ツールのハブを提供する強力な HTML5 Web アプリケーションは、外国為替、仮想通貨、従来の株式市場の動きを追跡するために何百万人ものユーザーに使用されています。
TradingViewには多くの強力な機能があり、多数の取引プラットフォームにわたって資産を追跡したり、ソーシャルネットワーク内で取引アイデアを公開したりすることができます。この記事では、そのカスタマイズ性に焦点を当てます。 TradingView独自のプログラミング言語であるPine Scriptを使用します。これにより、チャートのレイアウトをきめ細かく制御できます。
始めましょう!
Pine Script とは何ですか?
Pine Script は、TradingView チャートを変更するために使用できるスクリプト言語です。プラットフォームにはすでにチャートを変更するための多くの機能が備わっていますが、Pine Script を使用するとさらに一歩進めることができます。ローソク足の色を変更したり、新しい戦略をバックテストしたりする場合でも、Pine エディターを使用すると、必要に応じてリアルタイム チャートをカスタマイズできます。
コード自体は非常によく文書化されているので、詳細については必ずユーザー マニュアルを確認してください。このチュートリアルの目的は、いくつかの基本事項を説明し、暗号通貨取引に役立つインジケーターを紹介することです。
セットアップ
Pine Script を使い始めるのは非常に簡単です。私たちが書いたコードはすべて TradingView のサーバー上で実行されるため、追加のダウンロードや設定を必要とせずに、ブラウザーからエディターにアクセスしてスクリプトを開発できます。
このチュートリアルでは、ビットコイン/バイナンス USD (BTCBUSD) 通貨ペアのチャートを作成します。まだアカウントをお持ちでない場合は、無料アカウントを作成してください (プロ サブスクリプションも利用可能ですが、このガイドでは必要ありません)。
このリンクをクリックすると、次のようなグラフが表示されます。

あなたのものの方がおそらく最新のものになるでしょう。
ここでは、フル機能のチャートを取得したいので、ボタンをクリックしてアクセスします。これにより、より詳細なビュー、描画ツール、トレンドラインをプロットするオプションなどが提供されます。

フル機能のチャート。強調表示されたタブの上にあるビューをクリックして、時間枠を調整できます。
利用可能なさまざまなツールの使い方については説明しませんが、テクニカル分析に真剣に取り組む場合は、これらのツールに慣れておくことを強くお勧めします。左下(画像で囲まれている)にいくつかの異なるタブが表示されます。Pine Editor をクリックします。
パインエディター

このエディターで魔法が起こります。何をしたいのかを伝えて、[チャートに追加] をクリックすると、上に注釈が表示されます。一度に複数の注釈を追加すると混乱する可能性があるため、例の間で注釈を削除します (チャート内で右クリック > [インジケーターを削除])。
すでに数行のコードがあることがわかります。「チャートに追加」をクリックして何が起こるか見てみましょう。

2 番目のグラフが元のグラフの下に追加されます。新しいグラフは同じデータを表しています。My Script にマウスを移動し、×印をクリックして削除します。では、コードの詳細を見てみましょう。
study("私のスクリプト")この最初の行は、注釈を設定するだけです。インジケーターに付ける名前 (この場合は「My Script」) のみが必要ですが、追加できるオプションのパラメーターもいくつかあります。その 1 つが overlay で、これは TradingView にインジケーターを既存のチャートに配置するように指示します (新しいセグメントではなく)。最初の例からわかるように、これはデフォルトで false になっています。ここでは動作を確認しませんが、overlay=true はインジケーターを既存のチャートに追加します。
プロット(閉じる)この行は、ビットコインの終値をプロットする命令です。plot は単純に折れ線グラフを作成しますが、後ほど説明するように、ローソク足や棒グラフも表示できます。
では、次のことを試してみましょう。
//@version=4
study("My Script", overlay=true)
plot(open, color=color.purple)これを追加すると、2 番目のチャートが表示されます (元のチャートが右にシフトしたように見えます)。代わりに始値をプロットしただけですが、当日の始値は前日の終値であるため、これらが同じ形状になるのは当然です。
わかりました。現在の注釈を削除しましょう (右クリックして [インジケーターの削除] をクリックすることで削除できます)。Bitcoin / BUSD にマウスを移動して [非表示] ボタンをクリックすると、現在のチャートもクリアされます。
多くのトレーダーは、先ほど作成したような単純なプロットよりも多くの情報を提供するローソク足チャートを好みます。次にローソク足チャートを追加してみましょう。
//@version=4
study("My Script", overlay=true)
plotcandle(始値、高値、安値、終値)良いスタートですが、色がないので少し味気ないです。理想的には、指定された時間枠で始値が終値より大きい場合は赤いローソク足が表示され、終値が始値より大きい場合は緑のローソク足が表示されるはずです。plotcandle() 関数の上に 1 行追加します。
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)これはすべてのローソク足を見て、始値が終値より大きいか等しいかをチェックします。大きい場合は、期間中に価格が下がったことを意味するため、ローソク足は赤く表示されます。それ以外の場合は、緑に色付けされます。plotcandle() 関数を変更して、この配色を渡すようにします。
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close, color=colors)まだ削除していない場合は現在のインジケーターを削除し、このインジケーターをチャートに追加します。これで、通常のローソク足チャートに似たものになるはずです。

美しい!
移動平均線(MA)のプロット
基本的なことは理解できました。最初のカスタム指標である指数移動平均(EMA)に移りましょう。これは、市場のノイズを除去し、価格変動を平滑化できる貴重なツールです。
EMA は、最新のデータに重点を置くという点で単純移動平均 (SMA) と若干異なります。急激な動きに反応する傾向があり、短期的な取引 (たとえばデイトレード) によく使用されます。
単純移動平均(SMA)
後で 2 つを比較できるように、SMA をプロットしたほうがよいでしょう。スクリプトに次の行を追加します。
プロット(sma(close, 10))これは、過去 10 日間の平均をプロットします。括弧内の数値を微調整して、さまざまな長さを考慮した場合に曲線がどのように変化するかを確認します。

過去 10 日間に基づく SMA。
指数移動平均(EMA)
EMA を理解するのは少し難しいですが、心配はいりません。まずは式を分解してみましょう。
EMA = (終値 - 前日のEMA) * 乗数 - 前日のEMAでは、これは何を意味するのでしょうか? そうですね、各日ごとに、前日の移動平均に基づいて新しい移動平均を計算します。乗数は最新の期間を「重み付け」するもので、次の式で計算されます。
乗数 = 2 / (EMAの長さ + 1)単純移動平均と同様に、EMA の長さを指定する必要があります。構文的には、EMA をプロットする関数は SMA の関数に似ています。SMA と並べてプロットし、2 つを比較できるようにします。
//@version=4
study("My Script", overlay=true)
plot(sma(close, 10))
plot(ema(close,10))
2 種類の MA にはわずかな違いが見られます。
➠ 暗号通貨を始めようと考えていますか? Binance でビットコインを購入しましょう!
組み込みスクリプト
これまでは、コードを手動で記述して、その感覚をつかんでいただきました。しかし、特により複雑なスクリプトを記述していて、最初から記述したくない場合に、時間を節約できる方法を紹介しましょう。
エディターの右上にある「新規」をクリックします。さまざまなテクニカル指標を含むドロップダウン メニューが表示されます。「移動平均指数」をクリックすると、EMA 指標のソース コードが表示されます。

これをチャートに追加してみましょう。
これは私たちのものとは違います。input() 関数に気づくでしょう。このボックスをクリックできるので、使いやすさの観点からは便利です…

...設定ホイールをクリックすると、ポップアップ ウィンドウでいくつかの値を簡単に変更できます。

これを説明するために、次のスクリプトに input() 関数をいくつか追加します。
相対力指数(RSI)インジケーターのプロット
相対力指数 (RSI) は、テクニカル分析におけるもう 1 つの重要な指標です。これはモメンタム指標として知られており、資産の売買率を測定します。0 から 100 のスケールで表示される RSI スコアは、資産が買われ過ぎか売られ過ぎかを投資家に知らせるものです。通常、スコアが 30 以下の資産は売られ過ぎとみなされ、スコアが 70 以上の場合は買われ過ぎとみなされます。
「新規」>「RSI 戦略」に進むと、これを自分で確認できます。RSI は通常、14 期間 (つまり、14 時間または 14 日間) にわたって測定されますが、自分の戦略に合わせて設定を自由に調整できます。
これをチャートに追加します。これで、いくつかの矢印が表示されます (コード内の strategy.entry() 関数によって定義されます)。RsiLE は、資産が売られ過ぎている可能性があるため、資産をロングする潜在的な機会を示します。RsiSE は、資産が買われ過ぎている場合に資産をショートする可能性のあるポイントを強調表示します。すべてのインジケーターと同様に、これらを必ずしも価格が下落/上昇する確実な証拠として頼るべきではないことに注意してください。
バックテスト
カスタム インジケーターをテストする方法があります。過去のパフォーマンスが将来の結果を保証するものではありませんが、スクリプトをバックテストすることで、シグナルを拾うのにスクリプトがどれだけ効果的であるかを知ることができます。
以下に簡単なスクリプトの例を示します。BTC 価格が 11,000 ドルを下回ったときにロング ポジションに入り、価格が 11,300 ドルを超えたときにポジションを終了するという単純な戦略を作成します。これにより、この戦略が歴史的にどれほど収益性があったかを確認できます。
//@version=4
strategy("ToDaMoon", overlay=true)
enter = input(11000)
exit = input(11300)
price = close
if (price <= enter)
strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")
if (price >= exit)
strategy.close_all(comment="SellTheNews")ここでは、エントリーとエグジットを変数として定義しました。どちらも入力なので、後でチャート上で変更できます。また、各期間の終値を取得する価格変数も設定しました。次に、if ステートメントの形式でロジックをいくつか用意しました。括弧内の部分が true の場合、その下のインデントされたブロックが実行されます。そうでない場合はスキップされます。
したがって、価格が希望のエントリー以下の場合、最初の式は true と評価され、ロング ポジションが開きます。価格が希望のエグジットと等しいかそれを超えると、2 番目のブロックがトリガーされ、すべてのオープン ポジションがクローズされます。
チャートに、エントリー/エグジットした場所を示す矢印で注釈を付けます。そのため、コメント パラメータでこれらのポイントに付けるラベルを指定します (この例では、「BuyTheDip」と「SellTheNews」)。コードをコピーして、チャートに追加します。

チャート上にインジケーターが表示されるようになりました。ズームアウトする必要があるかもしれません。
TradingView は、古いデータにルールを自動的に適用します。また、Pine エディターから戦略テスター タブに切り替わることにも気づくでしょう。これにより、潜在的な利益の概要、取引のリスト、およびそれぞれのパフォーマンスを確認できます。

私たちがエントリーしたポジションとエグジットしたポジション。
まとめ
これまで見てきた概念のいくつかを使用して、独自のスクリプトを作成しましょう。EMA と RSI を組み合わせ、その値を使用してローソク足に色を付け、簡単に視覚化できる洞察を生み出します。
これは財務アドバイスとして解釈されるべきではありません。この指標を使用する客観的に正しい方法はありません。他のすべての指標と同様に、独自の戦略を開発するには他のツールと併用する必要があります。
それでは、新しいスクリプトに取り掛かりましょう。チャートからすべてのインジケーターを削除し、Bitcoin/BUSD チャートも非表示にして、作業用のクリーンなキャンバスを用意します。
まず、調査を定義することから始めましょう。好きな名前を付けることができますが、必ず overlay=true に設定してください。
study(title="Binance アカデミー スクリプト", overlay=true)先ほどの EMA の式を思い出してください。EMA の長さに乗数を指定する必要があります。整数 (つまり小数点なし) を必要とする入力にしましょう。また、最小値 (minval) とデフォルト値 (defval) も設定します。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)この新しい変数を使用して、チャート内の各キャンドルの EMA 値を計算できます。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)素晴らしい。RSI に移りましょう。同じように長さを指定します。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA の長さ", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI の長さ", type=input.integer, defval=25, minval=0)そして、次のように計算することができます。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA の長さ", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI の長さ", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)この段階では、EMA と RSI の値に応じてローソク足に色を付けるロジックをまとめましょう。(a) ローソク足の終値が EMA を超え、(b) RSI が 50 を超える状況を考えてみましょう。
なぜでしょうか? そうですね、これらのインジケーターを組み合わせて使用して、ビットコインをロングまたはショートするタイミングを判断できると考えるかもしれません。たとえば、これらの条件の両方を満たすということは、ロングポジションに入るのに良いタイミングであることを意味すると考えるかもしれません。または逆に、他のインジケーターがそうではないことを示している場合でも、ショートしないタイミングを知らせるために使用することもできます。
したがって、次の行は次のようになります。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA の長さ", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI の長さ", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal かつ rsiVal > 50 ? color.green : color.redこれを平易な英語に翻訳すると、EMA 値が終値を超え、RSI スコアが 50 を超えると、ローソク足が緑色に、それ以外の場合は赤色に変わります。
次に、EMA をプロットします。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA の長さ", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI の長さ", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal かつ rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")最後に、カラー パラメータを必ず含めて、キャンドルをプロットします。
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal かつ rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
plotcandle(open, high, low, close, color=colors)これがスクリプトです。チャートに追加して、実際に動作するか確認してみましょう。

EMA/RSI インジケーター付きの BTC/BUSD チャート。
最後に
この記事では、TradingView の Pine エディターで何ができるかについて、基本的な例をいくつか紹介しました。これで、価格チャートに簡単な注釈を付けて、独自のインジケーターから追加の洞察を得ることに自信が持てるようになったはずです。
ここではいくつかのインジケーターにのみ注目しましたが、「新規」から組み込みのスクリプトを選択するか、自分でスクリプトを作成することで、より複雑なインジケーターを簡単に作成できます。
インスピレーションが足りないですか? 以下の記事が、次のプロジェクトのアイデアを提供してくれるかもしれません。
パラボリック SAR インジケーターの簡単なガイド
フィボナッチ リトレースメントをマスターするためのガイド
先行指標と遅行指標の説明
MACDインジケーターの説明

