TradingView(トレーディングビュー)の「チャネルブレイクアウト・ストラテジー」のPineスクリプトをチェック
TraidngView(トレーディングビュー)のプログラミング言語であるPineスクリプトでは、移動平均線やMACDのようなインジケーターだけでなく、一定のロジックに基づく手法の売買シミュレーション(バックテスト)が行えるストラテジーを作成することができます。
今回はTradingViewに内蔵されている「ChannelBreakOutStrategy(チャネルブレイクアウト・ストラテジー)」を使って、ストラテジーではどのようにPineスクリプトが記述されるのか見ていきましょう。
「チャネルブレイクアウト・ストラテジー」のPineスクリプトの記述内容
TradingViewのストラテジーは、Pineスクリプトで売買の条件を記述することで、過去の値動きでどのような結果となったかをシミュレーションすることができます。
ここでは、TradingViewが作成した内臓ストラテジー「チャネルブレイクアウト・ストラテジー」のPineスクリプトを見ながら、ストラテジーのプログラム構造を確認していきます。
「チャネルブレイクアウト・ストラテジー」は、一定期間の高値を更新する動きとなった場合に買い、一定期間の安値を更新してきたら売りというシンプルなストラテジーです。
【「チャネルブレイクアウト・ストラテジー」のPineスクリプト】
//@version=5
strategy("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)
if (not na(close[length]))
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
一番上から見てみると、最初に「//@version=5」でPineスクリプトのバージョンを指定しています。
次に「strategy()」でストラテジーであることを宣言し、名前を「ChannelBreakOutStrategy」と指定し、メインチャート上にオーバーレイして表示させることを「overlay=true」で指定しています。
「input.int()」は、設定画面の「パラメーター」タブに項目を追加して、整数値を指定できるようにする関数です。
ここでは、「Length」というパラメーター項目を追加して、デフォルトを5、入力可能な最小値を1、最大値を1000と指定しています。
(実際の設定画面では、「Length」は日本語に変換され「期間」と表示されます。)
このパラメータ項目に設定された値は、「length」という変数に代入されます。
【ストラテジーの設定画面の「パラメーター」タブ】
続いて出てくるのが、「ta.highest()」「ta.lowest()」という関数です。
それぞれ、指定した値について、期間の最高値・最安値を取得してくれます。
取得した最高値・最安値を、変数として定義した「upBound」「downBound」に代入するという構造です。
もう少し細かく見ていくと、「ta.highest(high, length)」という形で、「ta.highest()」には「high」と「length」が引数として指定されています。
それぞれ、ここでは以下の意味を持ちます。
・high:高値
・length:パラメーター項目の「Length(期間)」の設定値(デフォルトは5)
パラメーター設定を変更していない場合、これを踏まえて該当部分の記述を翻訳すると、以下のような文章になります。
過去の5期間における高値のうち最高値を取得して、変数「upBound」に代入する。
過去の5期間における安値のうち最安値を取得して、変数「downBound」に代入する。
そして、いよいよ、注文の発注の命令に移ります。
※ストラテジーは、本当の注文を出すものではありません。
注文を出したものとしてシミュレーションを行うためのプログラムです。
注文の命令文を見ると、最初に「if (not na(close[length]))」とあります。
この文章が意味するのは、一定期間の終値のデータがない場合には何もしませんというものです。
つまり、指定した期間のデータが揃っていない場合は注文しないということを最初に定義しています。
続いて、注文の条件を定義しています。
上段が買いの場合の条件で、下段が売りの場合の条件です。
詳しく見ていくと、上段では「”ChBrkLE”」とこの注文の名前を指定し、次に「strategy.long」で買いの注文としています。
「stop=upBound + syminfo.mintick」でレンジの高値の1ティック上を逆指値価格として指定しています。
upBoundに代入した最高値に最小値幅(syminfo.mintick)を足した数値が逆指値価格になるので、現在値がupBoundの数値を少しでも上回ったら買い注文が入ることになります。
最後に「comment=”ChBrkLE”」で注文した場所にコメント「”ChBrkLE”」と表示すると指定しています。
下段も上段と同様の構造で、現在値がdownBoundに代入した最安値を少しでも下回ったら売りが入るようになっています。以上が、「チャネルブレイクアウト・ストラテジー」のプログラムの中身です。
なお、バックテストを行う際、初期資金や発注サイズなども重要な要素となります。
これらについては、以下の設定画面の「プロパティ」タブから細かく調整することができます。
ストラテジーの設定画面の調整項目、検証結果の見方についてはこちらをご覧ください。
TradingViewのストラテジーをさらに読みたい方へオススメコンテンツ
OANDA証券では、TradingView(トレーディングビュー)の内蔵ストラテジーを活用した取引戦略に関するコンテンツを豊富に提供しています。
どんな相場なら通用しやすいのかや、相性の良い通貨ペアなど、具体的な運用方法を知ることができ、参考にしていただけます。
TradingView(トレーディングビュー)で使用する情報は、全てTradingView(トレーディングビュー)社に帰属するものであり、当社は、その正確性、完全性を保証するものではありません。同サイトで使用する情報に基づいて行った取引によって発生したいかなる損害・損失について、当社は一切責任を負いかねますのでご了承下さい。最終的な投資判断についてはお客様ご自身でお願い致します。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。