仮想通貨ではBOTによる取引をよく見かけるようになりましたが、FXや株式投資でもロボット投資が増えてくることは間違いありません。

時代の波に合わせてBOTを作成し始めた人も少なくないですが、自動取引のパーツを作れるようになったBOT初心者にとって次に頭を悩ませるのが、勝つためのロジックですよね。

この記事では、勝つためのロジックを見つけるためのTradingViewでのバックテストの仕方を説明していきます。

TradingViewでどうやってバックテストするの?

TradingViewは、ブラウザで利用できる高性能チャートツール

投資水準が進んでいる海外ではかなり主流なチャートツールなのですが、日本ではまだまだ主流とはいえません。

ただ、日本の仮想通貨取引所で利用されていたことからある程度成功している仮想通貨投資家のほとんどは利用していると言っても過言ではないでしょう。

詳しくは下記記事をご参考ください。

そんなTradingViewのですが、Pineと呼ばれる独自のプログラミング言語を使うことでバックテストを行うことができます。

バックテストに限らず、オリジナルのオシレーターを作ることができるのでぜひともマスターしておきましょう。

TradingViewでバックテストをやったことがない人は誰でも最初から学ぶ必要があるので、プログラミング経験がない人でもやってみましょう。

もちろん、ある程度プログラミング経験があったほうが親しみやすいことは間違いないですが、英語に近いプログラミング言語なので正直慣れてしまえば1日程度で使いこなせるようになります。

TradingViewでのロジックの組み方

それでは、TradingViewでの投資戦略の書き方についてサンプルコードをもとに解説していきます。

  1. ①まず、TradingViewで左下の「Pineエディタ」をクリック。
  2. ②続いて「新規作成」をクリックして、「空の投資戦略スクリプト」を選択します。
  3. すると、以下のコードが現れます。
    //@version=3
    strategy("マイ投資戦略", overlay=true)
    
    longCondition = crossover(sma(close, 14), sma(close, 28))
    if (longCondition)
     strategy.entry("My Long Entry Id", strategy.long)
    
    shortCondition = crossunder(sma(close, 14), sma(close, 28))
    if (shortCondition)
     strategy.entry("My Short Entry Id", strategy.short)

正直、初めて見る人にとっては何がどうなっているのかよく分からないのは、ほぼ間違いないと思います。

自力で読めるよう、一行ずつ解説していきますね。

//@version=3

そのままでOK。

メモとしてPineのバージョン情報が書かれています。

strategy("マイ投資戦略", overlay=true)

2行目から投資戦略に関わることが書かれています。

投資戦略の名前やどれだけ注文するかとか、取引所の手数料がいくらかのような取引をするかといった、初期設定が()の中にかかれます。

サンプルでは、strategy(“投資戦略の名前”, チャートに上書きoverlay、つまり見えるようにするTrueorしないFalse)というような設定になっています。

longCondition = crossover(sma(close, 14), sma(close, 28))

4行目では、ロングすべき状況longConditionを設定しています。

crossover(A,B)とは、A(主語)がB(目的語)を交差してcross上回ったover時を指します。

smaに関してはチャートに慣れしんだ読者ならご存知だと思いますが、単純平均移動線(Simple Moving Average)の略。

sma(始値openor終値close, 何足分)で単純平均移動線を指定できます。

ここまで解説したことをまとめると、4行目では14足の終値分の単純移動平均線が28足の終値分の単純移動平均線を上回ったら購入ということが書かれていることが読み取れるでしょう。

if (longCondition)

5行目では、もしifロングをすべき時longConditionなら、次の行動をとるようにということを指定しています。

strategy.entry("My Long Entry Id", strategy.long)

Pineではstratgy.entryで実際の売買シミュレーションを行います。

stratgy.entryで設定する内容は(”名前”, 買うlongのか売るshortのか)です。

最初の項目で名前を設定するのは、後ほどシミュレーション結果を見た際にどの行動をしたのかを判別できるようにするため。

2番めの項目でstrategy.longとロングすることを指定します。

なお、if文の中にある(もし〜と5行目の状態で初めて行われる)ことから、6行目は一段落下がっていることに注意してください。

shortCondition = crossunder(sma(close, 14), sma(close, 28))

8行目では逆にはショートのタイミングshortConditionを設定します。

今回は4行目の逆で、crossunder(A,B)つまりA(主語)がB(目的語)を交差してcross下回ったunder時に設定されていることがわかると思います。

つまり4行目とは逆で、8行目では14足の終値分の単純移動平均線が、28足の終値分の単純移動平均線を下回ったら売却となっています。

if (shortCondition)

9行目以下はそれぞれ、5行目以降と対称的な内容となっています。

一応解説すると、もしifショートのタイミングshortConditionなら、下の10行目を実施すると書かれています。

strategy.entry("My Short Entry Id", strategy.short)

6行目と同じようにstratgy.entryで売買を行います。

今回は売りなので、stratgy.entryの2つ目はstrategy.shortとショート(売り)に設定されています。

以上がサンプルの解説となります。

すでに分かった人もいると思いますが、このサンプルは典型的なデッドクロス・ゴールデンクロスの戦略が書かれているんです。

バックテストしたい自分流の投資戦略を作りたいときは、上記サンプルを応用して下記の項目を編集するだけです。

自分だけの投資戦略を作成するときに決めるべきこと
  1. いつ買うのか
  2. いつ売るのか
  3. またどれくらい売買するのか

売買のタイミングだけを変えたいときは、4行目と8行目を変更するだけですから非常にかんたんです。

バックテストをしたことがない人でも、TradingViewを活用することで投資戦略を作成するハードルが、かなり低くなっていますよね。

※ちなみにPineでは忘れないようにメモを記入したいときは、//を行の先頭にかきましょう。

実際にシミュレーションしてみよう

続いて実際のシミュレーションの仕方について解説していきます。

といっても、2ステップなので超シンプル

  1. ①ロジックの保存ができたら、早速実行してみましょう。
  2. ②右上の「チャートに追加」をクリック。
  3. すると、実行結果が表示されます。

青の折れ線グラフがどれくらいの資産の増減について書かれていますが、ただひたすらに減っていることが一目瞭然。

実際の相場で試して、損をするというようなことがバックテストを行うことで避けられたわけです。

サンプルのゴールデンクロス・デットクロスの戦略の結果としては最初のうちは利益が出ています。が、相場の急激な変動についていけず、利益が損失に変わっているというBOTあるあるパターンがみてとれますね。

ちなみに、筆者が別のロジックでBOTを運用したことがあるのですが、このバックテストと全く同じ状況に陥り損失を出したことが何度かあります。

バックテストをもっと早めにやっていれば、まぬがれていた損失なのでもったいないです。

ちなみにですが、もちろん何分足で計測するかを変化させれば違う結果になります。

投資にタラレバはないですが、1分足でバックテストしていたサンプルを3分足でテストすると下の写真のように利益がでていることが分かりますね。

TradingViewでバックテストをして投資戦略を練ろう

BOTを運用するならバックテストをすることは必須です。

バックテストを行なわずに直接相場でテストすると、失敗することがほとんど。

BOTを運用しなくても、自分の投資戦略が正しいかどうかについて、シミュレーションすることは非常に参考になります。

TradingViewを活用しないでバックテストを行うとなるとデータを集めたり、データの加工だったりすごく大変です。

ただ、最大の利益がでる投資戦略を運用するにはバックテストを行いつつ、自分の投資戦略をブラッシュアップしていく必要があります。

TradingViewでは、公開されている他の人のアイデアをもとにシミュレーションやバックテストを行うことができますが、完全コピーするだけで利益がでてくる可能性は低いです

他の人が考えたアイデアでボロ儲けしたいと思うかもしれませんが、そんな上手い話はありません。

仮にあるとしても、限定公開という形になっているはずです。

もし効果が高い戦略が公開されたのであれば、みんな活用するので効果が薄れていき、発見者に何の旨味がないですよね。

なお、注意してほしいのが、公開されているライブラリーでプロフィットファクターが2桁以上になっている場合はRepaintというチートが行われていることがほとんど。

このチートの内容をカンタンに説明すると、チャートの値動きを見て上がることや下がることが確定してから、前の段階で売り買いをしているというプログラムです。

当たり前ですが、相場でたらればが実現したら高い利益になります。

聖杯を見つけたいのであれば、公開されているアイデアを参考にしつつも自分でロジックを探し出していくしかありません

バックテストは無料でできるので、まだやったことがない人はとりあえずトライしてみましょう。

なお、次の記事でバックテスト以外の使い方についてもまとめていますので、分からないことがあったらご参考ください。