ひとつのインジケーターで複数表示!pineスクリプト自前なら何でもできる!前編

7回目ではインジケーターの複数表示と、それぞれの設定について考えていきます!後半ではストラテジーにも手を出します!

トレーディングビューは無料でも使えていいのですが、無料版では3種類しかインジケーターを入れることが出来ません。とても残念。

しかし、1つのインジケーターとして複数のインジケーターを設定してしまえば、同時にたくさんのインジケーターを表示することが可能になりますよ

複数インジケーターの価値

インジケーターは様々なものがありますが、それぞれに見られるものが異なります。例えば、移動平均線はある期間の終値の推移を示しますが、相場の過熱感などはわかりにくいです。一方、RSIは陽線と陰線の比率を表し、相場の過熱感(売られすぎ、買われすぎ)を教えてくれます。

また、RCIなどはトレンドの方向性などがわかりやすいですし、ストキャスティクスは一定期間での高安値のどの程度の位置にいるのかがわかりやすいです。

さらに、同じインジケーターであっても、期間をかえることで、短期の値動きなのか、長期の値動きに逆らっているのか沿っているのかなども判断することが出来るでしょう。別時間のローソク足を利用して記述すれば、簡易的なマルチタイムフレーム分析という事も可能です。

たくさんのインジケーターを出し過ぎると、逆に判断に困るかもしれませんが、あればあっただけ、情報を得られるという意味で、複数のインジケーターを同時に出すことには大きな価値があります。

移動平均線をたくさん出したい!

さて、では沢山、移動平均線(MA)を出すコードを書いてみましょう。

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FP嶋

//@version=5
indicator("マルチMA", overlay = true)
sma1 = ta.sma(close,10)
sma2 = ta.sma(close,25)
sma3 = ta.sma(close,75)
plot(sma1,color = color.new(color.red,0))
plot(sma2,color = color.new(color.yellow,0))
plot(sma3,color = color.new(color.lime,0))

まずはMAを定義します。

sma1、sma2、sma3と定義して、それぞれの期間を10-25-75としました。SMAを出す関数はta.sma()でしたね。引数は、(値、期間)です。今回は終値と期間を設定しています。

そして、それをplot()関数を複数使って表示する。ただそれだけで複数インジケーター設定が出来ました!簡単でしたね!

input.関数

さて、これだけでは不便なので、インジケーターの設定で期間を変更できるようにしましょう。

そのためにinput.関数シリーズを学びます。input.関数が使えるようになると、のちに続くstrategyがとても幅が広くなります。

input.関数

input() :最初の引数を自動判定して使える

input.bool() :boolの選択

input.color() :色の選択

input.float()  :小数点を含む数字

input.int()  :整数

input.price() : 価格を表示

input.session() :セッション時間を指定

input.source() : close等の値を指定

input.string() :文字列を指定

input.symbol() : シンボルを指定(USDJPY等)

input.time() :時間指定

input.timeframe() :足の指定

色々ありますね。input()がとても万能感ありますが、後々プログラムを見直すときにわかりにくいので、可能な限り何を入力するのかについて指定しておくほうが良いでしょう。

引数ももちろん色々あるのですが、基本的にはdefval(初期の値)を入れるだけでも良いです。

わかりにくいのはboolと、floatとintの違いですかね。ここら辺はプログラム慣れしてくれば大丈夫ですが、初めは良くわからないと思います。良くわからなくなったら自分でプログラムを書いてみて、関数部分をキーボードのCtrlを押しながら、マウスを左クリックしてみましょう。説明書きが出てきます。

bool

わかりにくい概念ですが、tureとfalseを判断します。プログラム慣れしないと、この概念は理解できないかもしれません。falseは0と同値です。しかし、trueは0以外なんでもよいです。通常1があてられます。なおさらわかりにくいですね。ONとOFFみたいなもので、実際、条件の判定などに良く使います

int

整数です。1,2,3,・・・などですね。小数点以下が入ると認識できなくなります。そんなのどうでも良いじゃないかと思うかもしれませんが、プログラム的には整数であるかどうかを要求されることがあり、間違っていると計算してくれません。例えば、現在値から足をさかのぼるときは整数ですよね。少数点以下は出てきません。もちろん概念的には小数点以下も考えることが出来ますが…

一方、価格は小数点以下を含みますよね(例USDJPY=111.111)。こういった値を扱う時はintは使えません。

float

intとは異なり小数点のあるものを扱えます。前出の通り、価格などはfloatで扱います。

設定できるようにしよう!

それでは、実際にSMAの期間を設定できるようにコードを書き換えてみましょう

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FP嶋

//@version=5
indicator("マルチMA", overlay = true)
len1 = input.int(10,"sma1")
len2 = input.int(25,"sma2", minval = 11)
len3 = input.int(75,"sma3", maxval = 200)
sma1 = ta.sma(close,len1)
sma2 = ta.sma(close,len2)
sma3 = ta.sma(close,len3)
plot(sma1,color = color.new(color.red,0))
plot(sma2,color = color.new(color.yellow,0))
plot(sma3,color = color.new(color.lime,0))

新たに len1~3を設定し、SMAの関数ta.sma()の引数の期間に相当する部分をlen1~3に変更しました。

また、len2,len3には引数として、minval、maxvalを設定してみました。

minvalは最小値、maxvalは最大値を設定します。なくても機能します。

今回len2は11より下の期間には設定できず、len3は200を超えて設定できません。

引数を見てみましょう

input.int(初期値、”設定の名前”、minval=最小値、maxval=最大値)となっています。他にもありますが、ここでは割愛

設定が出来るようになりました!

この状態にしておくと、strategyを使って自分のエントリーを再現した際、変数を少しずつ変えて検証することが出来るので、覚えておきましょう。

後編ではstrategyを実際に作ってみます。

今回はこのへんで!inputは必ず覚えましょう。

おすすめFXアイテム

過去検証や分析はMT4かFT4、Trading viewがおすすめです。

無料が良い人はMT4で、MT4を使わせてくれる口座を使用すると良いです。おすすめはFXTF

ガチで過去検証をやりたい人はFT4、

チャート分析に毎月課金してもいいよって人はTrading viewがおすすめです。無料もあります

Twitterでフォローしよう

おすすめの記事