【Bot作成者向け】トレーディングビューでのシミュレーション

仮想通貨取引ではBOTやAIによる取引が流行しはじめています。
そんな波に乗ってBOTを作成するようになった人も多いことでしょう。
自動取引のパーツを作れるようになったBOT初心者にとって次に頭を悩ませるのが、勝つためのロジックですよね。
この記事では、勝つためのロジックを見つけるためのトレーディングビューでのバックテストの仕方を説明していきます。

トレーディングビューとは

トレーディングビューは、ほとんどのトレーダーが活用しているチャートツールです。

既にご存知のように、トレーダーどころかZaifBitBankといった国内取引所でもトレーディングビューを使っています。

トレーディングビューのすごいことはチャートが分かりやすいオシレーターが豊富であるだけではありません。

世界中のトレードの天才たちが公開した戦略を無料で使ったり、自分が考えたロジックが相場で活躍するのかシミュレーションをしたりすることができるのです。

今回の記事では、トレーディングビューで自分が考えたロジックのシミュレーションの仕方について、初めて使う人向けにコードを含めて説明します。

テストするロジックの組み方

まず、トレーディングビューで左下の「Pineエディタ」をクリック。

続いて「新規作成」をクリックして、「空の投資戦略スクリプト」を選択します。

すると、以下のようなコードが現れます。

こちら改造できるように一つ一つ説明します。

Pine

//@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)

一つずつ説明していきます。

  • 1行目
    //@version=3
    そのままでOK。メモとしてバージョン情報が書かれています。
  • 2行目
    strategy("マイ投資戦略", overlay=true)
    ここからコードが書かれています。ストラテジーつまり戦略の基本的な設定が()の中にかかれます。
    戦略の名前どれだけ注文するかとか、取引所の手数料がいくらかのような取引をするかの設定です。
    このサンプルですと、最初の項目が戦略の名前、次の項目がチャート上で売り買いのタイミングを見えるように(見る場合はTrue、見えないようにする場合はFalse)するかを設定しています。

  • 3行目
    longCondition = crossover(sma(close, 14), sma(close, 28))
    ロング(買い)のタイミングを設定します。
    crossover(A,B)とは、A(主語)がB(目的語)を交差して(cross)上回った(up)時を指します。
    つまり、短期(14)の単純移動(closeなので終値)平均線が中期(28)の単純移動(closeなので終値の)平均線を上回ったら購入という条件になっています。
  • 4行目
    if (longCondition)
    もし、longConditionつまり3行目で設定した状況なら、次の行の行動をとるように指定します。
  • 5行目
    strategy.entry("My Long Entry Id", strategy.long)
    stratgy.entry売買を行います。

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

    2番めの項目でstrategy.longロング(買い)を設定します。
    この行は4行目と比べて、一段落下がっていることに注意してください。

  • 6行目
    shortCondition = crossunder(sma(close, 14), sma(close, 28))
    今度はショート(売り)のタイミングを設定します。
    今回ですと、crossunder(A,B)つまりA(主語)がB(目的語)を交差して(cross)下回った(under)時に設定されていますね。
    つまり3行目と対象的に短期(14)の単純移動(closeなので終値の)平均線が中期(28)の単純移動(closeなので終値の)平均線を下回ったら売却という条件に設定されています。
  • 7行目
    if (shortCondition)
    6行目で設定した条件になったら、下の8行目を実行します。
  • 8行目
    strategy.entry("My Short Entry Id", strategy.short)
    5行目と同じようにstratgy.entryで売買を行います。今回は売りなので、2番目の項目がstrategy.shortショート(売り)に設定されています。

つまり自己流のロジックを試したいときは売買のタイミングを変えればいいわけですから、3行目6行目を変えれば自分のボットが上手く動くのか判断できます。ちなみに取引額や初期金額の設定がしたい場合は、2行目で設定してください。

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

試してみたいロジックの設定ができたら、保存しましょう。

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

ロジックの保存ができたら、早速実行してみましょう。

同じ画面の「チャートに追加」をクリックします。

すると、実行結果が表示されます。

青が資産残高ですが、見事に減ってます
BOTで実際に可動させる前に試してみてよかったですね。

ちなみに、赤は資産が最大になったときからどれだけ減ったのかを表す暴落率です。

最初のうちは利益が出ていたものの、暴落や急騰などの相場の変動についていけず、利益が損失に変わっているというあるあるパターンがみてとれますね。

BOTを運用した人なら何度涙を飲んだかわからない状況が、見事に再現されています。

とはいえ、時間軸やパラメーターを変化させれば違う結果になります。

例えば、先程は1分足でテストしてみたのを、3分足に変更すると下の写真のように利益がでていることが分かります。

爆益BOTを運用しよう

BOT初心者は筆者のようにバックテストを行なわずに直接相場でテストしてしまい、失敗します。

とはいえ、BOTのバックテストは大変です。トレーディングビューを活用しないとデータを集めたりデータの加工だったりに苦労します。

また、今回は自分でロジックを組むことを前提に記事を書きました。

実際に最大の利益のでるロジックを実行するためには、自分でロジックを考えたオリジナルのものが必須です。公開されているライブラリーでプロフィットファクターが2桁以上になっている場合はチートが行われている場合があります。

Repaintというのですが、要は後からチャートをみて売り買いをしているというプログラムです。相場でたらればが実現したら、当然高い利益になりますよね。

もし効果が高い戦略が公開されたのであれば、みんな活用するので効果が薄れていきます。そのため、ソース公開されていてプロフィットファクターが2桁いくことはまずありえません。

爆益を出したいのであれば、公開されているライブラリを参考にしつつも自分でロジックを探し出すしかないのです。

バックテスト自体はトレーディングビューに登録することで無料で行うことができます。

とりあえず試してみて、物足りなくなったらプロ版にアップロードするのがよいでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です