TradingViewでインジケーターを自作する方法|画像付き解説
Tradingviewのインジケーターを自作したい!
Tradingviewにはpine言語という専用のプログラムで、比較的簡単にインジケーターを作成できる機能がついています。
インジケーターを作成できれば、より精密な手法を実現でき勝率を高めることが可能です。
この記事で分かること
Tradingviewでインジケーターを自作するメリット
TradingviewとMT4のインジケータ自作の比較
pine言語の詳細
Tradingviewでインジケーターを作成する方法
インジケーターを自作できれば、トレード以外でも収益チャンスが見込めます。
自分の手法を自作し、世界中のトレーダーが使うようになる夢を掴んでください。
さっそくpine言語でTradingviewのインジケーターを自作する方法を知りたい方は「pineスクリプトとは何か?」から読み進めてください。
TradingViewのインジケーターの機能や設定方法については以下の記事で解説しています。
Tradingviewでインジケーターを自作するメリット
Tradingviewは高性能なチャートツールとして世界中で使われており、特にインジケーターに特化したチャートツールです。
Tradingviewにはインジケーターを自作したり、改良する機能も付いており、プログラムに精通していない人でも、ある程度簡単に作成できます。
しかし、Tradingviewでインジケーターを自作するメリットが何かあるのか?と疑問に思う人もいるでしょう。
Tradingviewで自作するメリットは大きいので、以下の2つの項目で解説していきます。
無料プランで複数のインジを表示可能
販売によって利益を獲得できる
無料プランで複数のインジを表示可能
Tradingviewには無料プランと有料プランがあり、無料プランの場合は、表示できるインジケーターが3つまでしかないというデメリットがあります。
しかし、pine言語を使ってインジケーターを作成すれば、複数のインジケーターを組み合わせることができるので、無料プランであっても、3つ以上のインジケーターが表示可能になります。
TradingViewのプラン比較
販売によって利益を獲得できる
Tradingview内のインジケーターは無料で利用できますが、Tradingview外でTradingview対応のインジケーターを販売している人もいます。
Tradingviewはコミュニティに特化したチャートツールで、多くの人がインジケーターを利用しているので、販売のチャンスは大きいです。
TradingviewとMT4の自作インジケーターの違い
インジケーターを自作できるチャートツールといえば、Tradingviewと並んで知名度が高いMT4があります。
知名度だけでいえばMT4のほうが高いですが、MT4は古いツールで世界中で使われているだけに、自由度は高いですが、安全性は低い傾向があります。
一方で、Tradingviewの場合は、MT4より洗練されており、自作ツールもコミュニティも分かりやすく充実しているので、初心者であってもかなり使いやすいです。
TradingviewとMT4の違いについて詳しく2つの項目で解説します。
裁量トレード系と自動売買系の違い
無料と有料の違い
裁量トレード系と自動売買系の違い
Tradingviewと同じインジケーターの自作が可能なチャートツールとしてはMT4が有名ですが、MT4の場合は自動売買プログラムであるEAに力を入れており、Tradingviewは裁量トレード特化のインジケーターの提供が多いです。
Tradingviewでも自動売買のプログラムは作成可能ですが、MT4と比べると数が少ないです。
無料と有料の違い
Tradingviewで公開されているインジケーターは基本的に無料です。
なので販売したいときは外部サイトに誘導する必要があります。
一方でMT4のインジケーターやEAは優良で販売もできます。
一見利点に思えますが、詐欺のような商品が多いことも事実なので、安全性はTradingviewの方が高いと言えるでしょう。
TradingViewのpineスクリプトとは何か?
pineスクリプトとはTradingViewのインジケーターを作成する際に使うプログラミング言語です。
TradingViewのインジケーターやストラテジーは、pine言語で作成されています。
プログラミング初心者でも作成可能です。
基本的にはすでにできているソースコードをコピーし、分かる範囲から改良していく方法がおすすめです。
四則演算の記号
pine言語での足し算とか割り算に使う記号です。
+足し算を行う–引き算を行う*掛け算を行う/割り算を行う
ビルトイン変数について
ビルトイン変数というのは、入れ物のことです。
入れ物の中に変数や数値や文字列などを記入します。
例えば、「close」というビルトイン変数には「終値」の数値が記入されています。
open現在の始値high現在の高値low現在の安値close現在の終値hl2(高値+安値)÷2hlc3(高値+安値+終値)÷3ohlc4(始値+高値+安値+終値)÷4volume現在の足の出来高
使用頻度が高いのは終値です。
現在の値ではなくて1本前のローソク足の終値を獲得したい場合はclose1というように記入します。
ビルトイン関数について
ビルトイン関数には、計算式が入っています。
ビルトイン関数を使用することで、計算が簡単に行えます。
例えば、SMAの計算の場合はta.sma(変数,期間)と書けば計算が可能です。
テクニカル指標関数書き方SMAta.sma(終値, 期間)sma = ta.sma(close, 20)EMAta.ema(終値, 期間)ema = ta.ema(close, 20)MACDta.macd(終値, 期間1, 期間2, シグナル)[macd, signal, hist] = ta.macd(close, 12, 26, 9)ボリンジャーバンドta.bb(終値, 期間, 標準偏差)[mid, upper, lower] = ta.bb(close, 20, 2)RSIta.rsi(終値, 期間)rsi = ta.rsi(close, 14)ストキャスティクスta.sma(終値, 高値, 安値, 期間)stoch = ta.stoch(close, high, low, 9)
MACDとかボリンジャーバンドの関数の場合は、変数が複数変えるので、[]で囲み、必要な変数分を獲得します。
条件式とは?
条件式とは、条件によって違う処理を行う時に使用します。
例えば、「もしAの場合はBになり、それ以外のケースはCになる」といった時に条件式を使います。
記入方法としては、
if 条件A 処理Belse 処理C
と記入します。処理の部分は半角スペース4つ分あけなければいけません。
他の記入方法としては、
条件A ? 処理B : 処理C
と記入する方法もあります。
複数の条件を実行したいときは、andやorを使用してください。
3つ以上の条件をつなげることはできません。
条件の書き方意味条件A1 and 条件A2条件A1と条件A2の両方を満たせば条件A1 or 条件A2条件A1と条件A2のどちらかを満たせば
条件の書き方意味a == baとbが等しいときa != baとbが等しくないときa > baがbより大きいときa >= baがb以上のときa < baがbより小さいときa <= baがb以下のとき
a > b> cと書きたい場合はどうするのかというと、(a > b) and (b > c) と書けば、大丈夫です。
plot関数について
plot関数とは、チャート上にデータを描写するための関数です。
plot(データ, タイトル, ラインの色, ラインの太さ, 透過度, オフセット)と記入することで、チャート描写のデーターが反映されます。
例えば、plot(sma, title="SMA", color=color.red, linewidth=2, transp=50, offset=0)という風に記入します。
各パラメーターの詳細は以下の通りです。
データ表示したいインジケーター名タイトル データのタイトルラインの色ラインの色。color.色名と書けば適用される。種類は aqua、black、blue、fuchsia、gray、green、lime、maroon、navy、olive、orange、purple、red、silver、teal、white、yellow が選択可能ラインの太さラインの太さ。デフォルトは1で数字が大きくなると太くなる透過度 ラインの透過度。0~100の範囲内で選択可能で、数値が大きいほど薄くなる。オフセットデータの表示を左右にずらすことが可能。正の値は右にずらし、負の値は左にずれる。
TradingViewでインジケーターを作成する手順
これまでの記入方法を把握した上で、実際にインジケーターを作ってみましょう。
以下の4つの項目で作成手順を解説します。
新規インジケーター作成
インジケーター表示
スクリプトコードの解説
サブウィンドウに表示するインジケーターの自作
新規インジケーター作成
新規のインジケーターを作成するためにTradingViewのチャート下部にあるPineエディタタブをクリックします。
画面が小さい場合は、ドラッグで大きく広げたり、詳細ボタンから新しいウィンドウやタブで開いてください。
インジケーターの表示
実際にコードを張り付けてインジケーター表示してみましょう。
今回はSMAとEMAを切り替えて表示するインジケーターを作成します。
下のコードをコピーし、スクリプトに貼り付けてください。
//@version=5
//インジケーター名、ショートタイトル、表示ウインドウ
indicator(title="SMAorEMA", shorttitle="SorE", overlay=true)
//パラメータ
period = input.int(20, title="期間")
price = close
offset = input.int(title="オフセット", defval=0, minval=-500, maxval=500)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA"], group="種類")
//インジケーター計算
sma = ta.sma(price, period)
ema = ta.ema(price, period)
//条件式
ma = typeMA == "SMA" ? sma : ema
//ma = sma
//if typeMA == "EMA"
// ma := ema
//チャートに描画
plot(ma, title="MA", color=color.black, linewidth=2, transp=0, offset=offset)
張り付けた後は保存を選択してインジケーターを保存します。
名前を入力する場面が出てくるので適当に名前を入力します。
マイスクリプトにインジケーターが追加されたので、表示させましょう。
TradingView上部にあるインジケーターをクリックし、マイスクリプトを選択します。
マイスクリプトにデータが入ってることが分かりました。
作成したインジケーターを選択し、チャートに反映させます。
MAタイプの選択が可能なインジケーターが完成しました。
スクリプトコードの解説
最初の行の//@version=5というのは、Pineスクリプトのバージョンの指定です。
//と入力しておけば、プログラムに反映されないので、説明やコメントを書いて後から見て分かりやすくなるようにしておきましょう。
次の行は以下の通りです。
//インジケーター名、ショートタイトル、表示ウインドウ
indicator(title="SMAorEMA", shorttitle="SorE", overlay=true)
indicatorというのはインジケーター関数のことです。
左から項目を説明します。
title インジケータータイトルshorttitle チャートに表示されるタイトルoverlay trueでメインチャート表示、falseでサブチャート表示
となっております。
次はパラメーターの解説です。
//パラメータ
period = input.int(20, title="期間")
price = close
offset = input.int(title="オフセット", defval=0, minval=-500, maxval=500)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA"], group="種類")
パラメーターの指定にはインプット関数を使います。
理由は、設定からパラメーター変更をできるようにするためです。
種類の説明は下記の通りです。
種類説明input.int()整数を指定できるinput.float()小数を指定できるinput.string()文字列を指定できる
次にパラメーターの内容は下記の通りとなります。
titleパラメータ名defval デフォルト値minval パラメータの最小値maxval パラメータの最大値options 選択肢を指定groupグループ表示
既に上述しているビルトイン関数を使いインジケーターの計算をしています。
ビルトイン関数については、本記事の「ビルトイン関数について」を参考にしてください。
次に条件式を使い、SMAとEMAの選択制を作成します。
//条件式ma = typeMA == "SMA" ? sma : ema
最後にplot関数を使いチャートに描写を行う設定をします。
//チャートに描画 plot(ma, title="MA", color=color.white, linewidth=2, transp=0, offset=offset)
以上でインジケーターの作成は終了です。
複雑なプログラムを組むわけではないので、記事を読めばインジケーターの作成は比較的簡単に行えると思います。
サブウィンドウに表示するインジケーターの自作
サブウィンドウとは、メインチャートの下のウィンドウのことです。
場所でいうと下図のあたりになります。
TradingViewではメインチャートとサブウィンドウ間をインジケーターが自由自在に移動させる機能がついているので、様々な組み合わせでインジケーターを設定できます。
では早速サブウィンドウにインジケーターを表示するスクリプトコードを解説します。
今回は、SMAとEMAを両方表示できるインジケーターを作成します。
最初にインジケーター関数を使い、タイトルとオーバーレイの記入です。
サブウィンドウに表示させたいので、オーバーレイはfalseにします。
//@version=5
//インジケーター名、ショートタイトル、表示ウインドウ
indicator(title="SMAandEMA", shorttitle="SandE", overlay=false)
パラメーターは前回の例と同じものを使い、SMAとEMAの選択がないので、条件式は使いません。
//パラメータ
period = input.int(20, title="期間")
price = close
offset = input.int(title="オフセット", defval=0, minval=-500, maxval=500)
インジケーターの計算式は前回と同様のものを使います。
//インジケーター計算
sma = ta.sma(price, period)
ema = ta.ema(price, period)
チャートの描写は、今回は条件式がないので、直接描写できるコードを記入します。
//チャートに描画
smaplot = plot(sma, title="SMA", color=color.aqua, linewidth=2, transp=0, offset=offset)
emaplot = plot(ema, title="EMA", color=color.orange, linewidth=2, transp=0, offset=offset)
以上です。まとめると下記の通りになります。
//@version=5 //インジケーター名、ショートタイトル、表示ウインドウ indicator(title="SMAandEMA", shorttitle="SandE", overlay=false)//パラメータ period = input.int(20, title="期間") price = close offset = input.int(title="オフセット", defval=0, minval=-500, maxval=500)//インジケーター計算sma = ta.sma(price, period)ema = ta.ema(price, period)//チャートに描画 smaplot = plot(sma, title="SMA", color=color.aqua, linewidth=2, transp=0, offset=offset)emaplot = plot(ema, title="EMA", color=color.orange, linewidth=2, transp=0, offset=offset)
このコードをスクリプトに張り付けて保存します。
詳しくは本記事の「インジケーター表示」を参考にしてください。
チャートに追加すると選択するか、保存したインジケーターをマイスクリプトから選んで表示して下図のようになれば成功です。
背景色を変えたい場合は、bgcolor関数を使いましょう。
SMAがEMAより大きい場合とそれ以外で色分けに表示するコードを作成します。
bgcolor(sma > ema ? color.aqua : color.orange, transp=90)
2本のラインの間を塗りつぶしたいので、fill関数を使います。
piot関数を使って、変数名を指定すればライン間を塗りつぶせます。
fill(smaplot, emaplot, color = sma > ema ? color.orange : color.aqua, transp=50)
2つのコードをSMAとEMAを両方表示できるインジケーターのコードに追加します。
全てのコードをまとめると下記のようになります。
//@version=5 //インジケーター名、ショートタイトル、表示ウインドウ indicator(title="SMAandEMA", shorttitle="SandE", overlay=false)//パラメータ period = input.int(20, title="期間") price = close offset = input.int(title="オフセット", defval=0, minval=-500, maxval=500)//インジケーター計算sma = ta.sma(price, period)ema = ta.ema(price, period)//チャートに描画 smaplot = plot(sma, title="SMA", color=color.aqua, linewidth=2, transp=0, offset=offset)emaplot = plot(ema, title="EMA", color=color.orange, linewidth=2, transp=0, offset=offset)//チャートに描画し背景を追加bgcolor(sma > ema ? color.aqua : color.orange, transp=90)fill(smaplot, emaplot, color = sma > ema ? color.orange : color.aqua, transp=50)
成功すれば下記の画像のように背景に色を付けることが可能です。
色合いは設定から変更もできます。
公開されているインジケーターのソースコードを参考にして、改良を加えていけば、意外に簡単に自分の手法を実現したインジケーターを作成できますよ。
TradingViewでオリジナルのインジケーターを作ろう
TradingViewはコミュニティツールとして非常に優れており、自作したオリジナルインジケーターが優れているものならば、多くのトレーダーに使われる可能性は非常に高いです。
TradingViewにはトレード以外でもインジケーターの自作によって収益を得れるチャンスがあります。
この記事のまとめ
Tradingviewでインジケーターを自作するメリット
TradingviewとMT4のインジケータ自作の比較
pine言語の詳細
Tradingviewでインジケーターを作成する方法
Tradingviewでインジケーターを作ること自体はかなり簡単であることをお伝えしました。
しかし、作成は簡単でもアイディアを得ることは難しいものです。
様々な公開されているインジケーターに触れることで、新たな発想を得て、新しいタイプのインジケーターを作成できるかもしれません。
Tradingviewの公開されているインジケーターを使い、参考にして新たなインジケーターを作り、トレードや販売に役立ててください。
コメント コメント 0