pineスクリプトで移動平均線クロスの売買をバックテストしてみる-サンプルコード付き

Trading Viewで使えるプログラミング言語を使って移動平均線のクロスで売買したら資産は増えるのか?挑戦したいと思います。

移動平均線といえば、多くの投資家さんが使用するとっても有名なインジゲーターの一つです。

その中でも「ゴールデンクロス」と「デッドクロス」は有名な売買サインかと思います。

ある程度投資をしたことがある人、勉強している人ならピンときているかと思います。

そうです「移動平均線のゴールデンクロスやデッドクロスで売買しても投資では勝てません」

それは前提として、今回はpineスクリプトの勉強のため、移動平均線のクロスで売買するとどうなるかコード書いてバックテストをしていきたいと思います。

スポンサーリンク

移動平均線のクロスで売買するサンプルコード

毎度のことですが、さっそくサンプルコードから紹介していきたいと思います。

こんな感じになります。

これをTrading Viewで実行してバックテストの結果を見てみると、

あれ?勝ってますね(笑)

上のは、ビットフライヤーのFXチャート1時間足になります。

2017年末のビットコインの暴騰と、年明け2018年頭の暴落時に大きく稼いでいる感はありますが、結果として移動平均線のクロスで売買した場合には、勝っているという結果になりました。

移動平均線クロスpineスクリプトコードの説明

それでは、コードの説明をしていきますが、移動平均線の計算については過去記事に書いていますので、そちらも参考にしてください。

参考→【初心者向け】pine scriptでチャートに移動平均線を絵画してみよう!サンプルコード付き

参考→pine script(pine スクリプト)-移動平均線が交差したときに矢印をチャート上に表示させるコード

この2つの記事で、移動平均線の計算方法とクロス判定に使用するcrossoverとcrossunderという関数について書いていますので、この記事ではサクッと説明する感じで進めていきます。

まず最初の2行

まず最初「//@version=3」でpineスクリプトのバージョンを指定します。

一番新しい(記事執筆時点で)のがバージョン3なので、このままでOKです。

次に

strategy(“移動平均線のクロス”, overlay=true)

ですが、いままで「study」と書いていたところが「strategy」に変わります。

今回はチャートに線を書いたり、矢印を書いたりするのではなく(もちろんstrategyでもできますが)、バックテストを行うのが目的です。

pineスクリプトで、バックテストを行う場合には「strategy」を宣言して売買条件を記載しなければなりません。

次のこの5行では、SMAを計算しています。

過去記事に書いているので詳しくは書きませんが、移動平均線の短期戦を「shortMA」に中期線を「longMA」に代入しています。

移動平均線のクロスを判定する基準になるものです。

次の2行で、「longCondition」と「shortCondition」という変数を二つ準備しました。

これは「買う」か「売る」かの判断に使用するための変数で、中には移動平均線のゴールデンクロスとデッドクロスがそれぞれ代入されています。

最後に売買条件の記載です。

「if(★★★)」という文が最初にありますが、これは「もし括弧の中が成立したら」という条件分岐になります。

if (longCondition)

この場合は「longCondition」が成立した場合になり、「longCondition」とは移動平均線のクロスとなるわけです。

二度目の「if(★★★)」には「shortCondition」が入っています。

次に

strategy.entry(“My Long Entry Id”, strategy.long)

とありますが、strategy.entry()でバックテストの売買を行うという命令を出すことができます。

「”My Long Entry Id”」はこの売買の名前、「strategy.long」はロングの注文を出してください。という意味です。

カンマ区切りで入力してください。

売りの方はというと「”My Short Entry Id”」というタイトルで「strategy.short」が売りの注文を出しています。

これで、「買い」と「売り」の注文が「if(★★★)」で指定した条件をクリアした場合に成立するようになります。

移動平均線クロスのバックテストまとめ

バックテストを行う関数「strategy」が初めて出てきましたが、基本インジゲーターのロジック系さんは「study」と一緒です。

ただ、strategyの場合にはバックテストを行うために売買条件の記載が必須になります。今回は「if(★★★)」と「strategy.entry」で記載した部分です。

pineスクリプトは自分が書いたオリジナルの手法でバックテストができるという利点があります。

裁量にしても、botにしてもバックテストはとても重要です。

pineスクリプトを便用中の方は、ぜひ覚えておきましょう。