TradingViewのストラテジーテスター入門【バックテストのやり方】
投稿日:カテゴリ:TradingView
この記事のポイント
「この売買ルールは、本当に有効なのだろうか?」と、自分の取引アイデアに確信が持てずにいませんか。TradingViewの「ストラテジーテスター」は、そんなあなたの自作ロジックが過去の相場で通用したかを検証(バックテスト)する強力なツールです。この記事では、簡単な売買ルールの作成から、そのテスト結果の見方までを初心者にも分かりやすく解説します。これを読めば、データに基づいた客観的な戦略評価が可能になり、あなたのトレードを次のレベルへと引き上げることができます。
「この取引ルール、本当に儲かるの?」過去のデータで検証できない悩み
「ゴールデンクロスで買ったら勝率はどのくらいだろう?」「このインジケ-タ-のサインに従えば、本当に利益は出るのだろうか?」あなたも、自分なりの取引アイデアを思いついた時、その有効性を客観的に知りたくなったことはありませんか。過去のチャートを目で追いかけて数回分の結果を確認することはできても、それが統計的に本当に優位な戦略なのかは分かりません。
かといって、何の裏付けもないまま、いきなり大切なお金を使ってその戦略を試すのは、あまりにも危険です。
もし、あなたの取引アイデアが、過去10年間のデータでどのような成績を収めたかを、数秒でレポートしてくれる機能があったとしたらどうでしょう。
TradingViewの「ストラテジーテスター」は、まさにそれを実現するための、強力なバックテストツールなのです。
ストラテジーテスターとバックテストとは何か?
「バックテスト」とは、あなたが考案した売買ルールが、過去の相場で通用したかどうかを検証する作業のことです。そして、TradingViewでこのバックテストを行うための機能が、チャート下部パネルにある「ストラテジーテスター」です。
ここで重要なのは、Pineスクリプトには2つの種類があるという点です。一つは線などを描画するだけの「インジケーター」、もう一つは仮想の売買を実行できる「ストラテジー」です。
ストラテジーテスターは、後者の「ストラテジー」として書かれたスクリプトを動かすためのものです。スクリプトの1行目を`indicator()`ではなく`strategy()`と記述することで、そのスクリプトはストラテジーとして認識され、バックテストが可能になります。
まずはこの違いを理解することが、バックテストの第一歩です。
Pineスクリプト:「インジケーター」から「ストラテジー」への書き換え
バックテストを行うには、Pineスクリプトを「インジケーター」から「ストラテジー」へと変更する必要があります。まず、コードの定義部分を書き換えます。
上記の記事で作成した`indicator(“…”)`という行を、`strategy(“…”)`というように、単語を`indicator`から`strategy`に変更してください。
これだけで、TradingViewはこのスクリプトをバックテスト可能なものとして認識します。
次に、具体的な売買ルールを追加します。ただ線を描くだけのインジケーターと違い、ストラテジーには「どんな条件で売買するか」という命令が必要です。
そのために使うのが、`strategy.entry()`(新規注文)や`strategy.close()`(決済注文)といった、売買専用の命令文です。
実践:ゴールデンクロスで売買するストラテジーを作成する
それでは、具体的な売買ルールを持つストラテジーを作成します。ここでは、「20期間の移動平均線が50期間の移動平均線を上抜けたら(ゴールデンクロス)買い、下抜けたら(デッドクロス)決済する」というロジックをコード化します。
まず`strategy()`関数でストラテジーであることを定義します。
次に、20期間と50期間の移動平均線を計算し、`ta.crossover()`という関数でゴールデンクロスの条件を、`ta.crossunder()`でデッドクロスの条件をそれぞれ設定します。
最後に`if`文を使い、「もしゴールデンクロスが起きたら`strategy.entry()`で買い注文を出す」「もしデッドクロスが起きたら`strategy.close()`でポジションを決済する」という命令を記述します。
このコードをPineエディタに入力し、チャートに追加すれば、バックテストの準備は完了です。
ストラテジーテスターの実行と結果の見方
作成したストラテジーを「チャートに追加」すると、自動でバックテストが実行され、売買のシグナルが矢印で表示されます。その詳細な成績は、チャート下部の「ストラテジーテスター」タブで確認します。まず注目すべきは「純利益」です。これがプラスなら、その期間で利益が出たことを意味します。
「プロフィットファクター」は、総利益を総損失で割った値で、1以上が目安です。「勝率」は、利益の出た取引の割合を示します。
そして「最大ドローダウン」は、期間中の資産の最大下落率で、その戦略が抱えるリスクの大きさを示します。
これらの客観的な数値を見ることで、あなたの取引アイデアが、過去の相場で本当に有効だったのかを評価することができます。
ストラテジーのパラメーターを最適化する方法
バックテストの結果を、より改善させるための作業が「最適化」です。これは、ストラテジー内のパラメーター(移動平均線の期間など)を変更し、最も良い成績が出る組み合わせを探すことです。これを行うには、インジケーターの時と同様に`input()`関数を使い、期間などの数値を外部から変更可能にします。設定を変更するたびに、ストラテジーテスターの結果は自動で再計算されるため、どの数値の組み合わせが最適かを効率的に探せます。
しかし、最適化には「カーブフィッティング」という大きな罠があります。これは、過去のデータに過剰に適合させすぎることで、未来の相場では機能しない、見せかけの戦略を作り出してしまう危険性です。最適化はほどほどに留めましょう。
行動へのステップ
1.TradingViewのチャート画面を開き、下部パネルから「Pineエディタ」を選択しましょう。
2.この記事で紹介した、ゴールデンクロスで売買する「ストラテジー」のコードを正確に入力してみましょう。
3.エディタ上部の「チャートに追加」ボタンを押し、チャート上に売買を示す矢印が表示されることを確認しましょう。
4.次に、下部パネルの「ストラテジーテスター」タブをクリックし、「純利益」や「勝率」などの成績を確認してみましょう。
5.Pineエディタに戻り、移動平均線の期間の数値を変更して「保存」を押し、バックテストの結果がどう変わるか観察してみましょう。















