TradingViewのストラテジーを使うと、トレードルールの検証が手軽に行なえます。
ストラテジーはTradingViewに標準搭載されているものもありますが、これらはあくまでサンプル程度。自分で考えたトレードルールのアイデアを検証するには、「PineScript」を覚えてストラテジーを自作するのがおすすめです。
本記事では、PineScriptでストラテジーが自分で作れるようになると、どんなことができるようになるのか?をご紹介します。あなたのPineScript習得のきっかけになれば幸いです。
多様なトレードルール作り
エントリールールを自由に作成できる
PineScriptのコードでは、ローソク足の価格や出来高、テクニカル指標のサインなどを組み合わせて「エントリー条件」を自由に作ることができます。
たとえば「5日移動平均線が25日移動平均線を上抜けたかどうか」を判定するなら、以下のようなコードになります。
ta.crossover(ta.sma(close, 5), ta.sma(close, 25))
PineScriptのコードは各足で実行されますので、Pythonなど他の言語に比べれば少ない記述で条件を書くことができます。
他にもボリンジャーバンドやRSI、MACDやストキャスなど、主要なテクニカル指標はもちろん、赤三兵/黒三兵などのローソク足パターンなども、コードさえ書けばエントリー条件にすることができます。
決済ルールを自由に作成できる
PineScriptのコードで、様々な条件の決済ルールを組み込むことができます。
例えば以下のようなルールも、少ないコードで簡単に組み込めます。
- エントリーから●円上昇(下落)したら利確(損切)
- エントリーから●%上昇(下落)したら利確(損切)
- エントリーから●日経過したら決済
さらにテクニカル指標のサインも条件にできます、例えば以下のような。
- 終値が5日移動平均線を下回ったら決済
- ボリンジャーバンドのアッパーバンドに達したら決済
- RSIが30未満になったら決済
これらのルールも、他のプログラミング言語に比べて容易に組み込めます。
フィルターやセットアップの条件も作成できる
トレードルールを作成する際、「フィルター」や「セットアップ」の条件も重要です。
例えばテクニカル指標のサインが発生した時に、「長期のトレンドが発生している時だけエントリーする」といったフィルター条件を追加することも可能です。
また「条件Aから●日以内に条件Bが発生したらエントリー」といった、セットアップを考慮したストラテジー作りも可能です。
指値/逆指値のルールも作成できる
通常の書き方だと「サイン発生した翌日に成行エントリー」となりますが、指値や逆指値によるエントリー/決済も設定できるようになっています。
例えば、テクニカル指標のサインが発生したら翌日に5%下で指値を入れておく・・といったルール作りも可能です。
ピラミッティングにも対応
初期設定では1つのルールに付き保有するポジションは1つだけですが、ピラミッティングを有効にすると複数ポジションを保有するトレードルールを作ることもできます。
エントリー条件を3つ用意しておき、1つ達成されるごとにポジションを積み増すようなルールや、値上がり幅に応じて分割決済していくようなトレードルールも作成可能です。
より便利なストラテジー
ここまではトレードルールのロジック作りに関するお話でしたが、PineScriptではそれ以外にも「ストラテジー」そのものが便利に使えるようになるコードの書き方が多数用意されています。
ストラテジーの初期値を設定
ストラテジーの設定画面では「発注サイズ」や「手数料」などを設定することができ、使いこなせるとより厳密なバックテストが可能になります。
これらの初期値はPineScriptコードで設定することができるので、よく使う設定をコードとして用意しておけば、毎回同じ初期設定のストラテジーを作りやすくなります。
インジケーターをストラテジーに組み込み
ストラテジーの欠点として、「トレードサインしか表示されない」点が挙げられます。
例えば移動平均線に関するストラテジーを作っても、移動平均そのものは表示されないため、別途インジケーターを追加する必要があります。
しかし実はストラテジーのPineScriptコード内に、インジケーターで使うplot命令を組み込むことができるんです。チャートにストラテジー1つ追加するだけで、テクニカル指標のグラフもサインも売買シグナルもまとめて表示できる点はとても便利。
パラメーターで条件のある/なしでの違いを検証
ストラテジーはインジケーターと同様、パラメータを設定できます。
パラメータは移動平均線の日数など、テクニカル指標の計算に必要な値を利用者が自由に変更できるように設定することも多いですが・・
PineScriptの書き方を工夫すると、エントリーや決済の条件を「チェックボックス」で制御できるようになります。
例えば「200日SMAより上にある時だけエントリー」というパラメータを用意し、チェックを切り替えるだけで違いを検証できる・・そんなストラテジーも作れるんです。
バックテスト期間の設定
チャートにストラテジーを設定すると、チャート全期間のバックテストが行なわれます。
TradingViewの上位プランだと期間指定ができるのですが、PineScriptコードが書けるなら自分でエントリーの期間を制御することも可能です。
たとえば「2020年以降のチャートのみでバックテストする」といったことも可能になります。
サンプルコードを手に入れよう
PineScriptはゼロからコードを書くこともできますが、サンプルコードを探してカスタマイズするのがとても便利です。サンプルコードを入手するにはどうすればよいでしょうか?
TradingView標準搭載のストラテジーを参考にする
インジケーターを追加する画面で「ストラテジー」を選択すれば、標準搭載のストラテジーが一覧表示されます。(各スクリプト名の右端に上下矢印のアイコンが表示されているのが、ストラテジーです)
これらのストラテジーのほとんどは、PineScriptコードが丸々公開されています。
何かベースとしたいストラテジーがあれば、そのコードをコピペして自作ストラテジーに貼り付けることで、ルールを追加しカスタマイズできるようになっています。
つまりPineScriptの書き方が分かれば、これら標準搭載のストラテジーは最高の「サンプルコード」として活用できるというわけです。
「コミュニティ」スクリプトを参考にする
さらに複雑なサンプルコードが欲しい場合は、インジケーター設定画面の「コミュニティ」タブを見てみましょう。ここには世界中のTradingViewユーザーがPineScriptで作成したインジケーターやストラテジーが公開されています。
全部英語なのが難点ですが、PineScriptに慣れてくればコードを読むだけでどんなロジックなのか理解できるようになります。
ルール作りやコードの書き方など、アイデアの宝庫なのでぜひチェックしてみてください。
ChatGPTに相談する
今話題のAIチャットツール「ChatGPT」も、PineScriptに対応しています。
「こんなトレードルールが作りたいので、PineScriptでサンプルコード作って」とお願いすれば、良い感じのPineScriptコードを作ってくれます。素晴らしい時代になったものです。笑
ただChatGPTから出力されるサンプルコードは、若干内容に問題があることも多いので、一度チャートに設定して動作確認してみることをおすすめします。
おわりに
以上、PineScriptでTradingViewのストラテジーが自作できるようになると、どんなことができるようになるのかまとめてみました。
本記事を読んで「PineScriptを覚えてみようかな?」と興味を持つ方が1人でも多く増えてくれると嬉しいです。
(※本ブログでも随時サンプルコードを公開していく予定です)