MT4ではEA(自動売買プログラム)のバックテストができますが、TradingViewにも「ストラテジーテスター」というバックテスト機能があります。
TradingViewには標準のストラテジーや、ほかのユーザーが公開したストラテジーがたくさんあるので、Pineスクリプトを自分で書かなくても、ある程度の検証ができます。
※記事内の検証画面は2021年に作成したものです。その後TradingViewのプラン名や画面の構成が変わっているため、現在の仕様に合わせて説明を補足しています(2026年10月更新)。
ストラテジーテスターでできること
TradingViewのストラテジーテスターを使うと、主に次のようなことができます。
- テクニカル手法が有効かどうかを確認できる
例えば「ボリンジャーバンドの逆張りは、どのタイミングで入ると勝率が上がるか」「ダマシをどう避けるか」といったことを、過去何年分ものデータで一瞬で検証できます。 - MT4より手軽に検証できる
MT4でもストラテジーテスターでEAのバックテストができますが、ヒストリカルデータの準備などが必要です。TradingViewはチャート上でそのまま検証できるので、より手軽です。
バックテストは本来、Pineスクリプトでコードを書いて行うものですが、TradingViewには最初からいくつかのストラテジーが用意されています。
チャート上部の「インジケーター」(fxのアイコン)をクリックすると「インジケーター&ストラテジー」の画面が開きます。ここで「strategy」と検索すると、次のようにストラテジーの一覧が表示されます。
Ref: TradingView
「内蔵」はTradingViewに標準で入っているストラテジーです。このほかに、一般ユーザーが公開しているストラテジーも選べます。
例として「MACD Strategy」をチャートに表示してみます。

チャート下の「ストラテジーテスター」に結果が表示されます。2021年の検証時点では「概要」「パフォーマンスサマリー」「トレード一覧」の3つのタブで評価できました。
※現在のストラテジーテスターは「概要」「パフォーマンス」「トレード分析」「リスク/リターン比率」「トレード一覧」のタブ構成になっています。指標の意味や見方の基本は変わりません。
概要
GBPJPYの日足で「MACD Strategy」を実行した結果です。設定はデフォルトのままで、次の条件になっています。
- 初期資金:10万円
- 発注サイズ:1通貨(実際のトレードに近づけるには変更が必要)
- スプレッド・手数料・スリッページは考慮しない
エクイティカーブ(equity curve)と呼ばれる資産の増減グラフが表示されます。青が利益、赤が損失です。青いグラフが安定して右肩上がりになっているのが理想です。
- 左の縦軸:初期資金+損益
- 右の縦軸:損失(ドローダウン)
- 横軸:トレード回数
エクイティカーブの上には、次の項目が表示されています。
- 純利益:118.25円(0.12%)
最終的な損益と、初期資金に対する損益率です。金額が小さいのは、1回のトレードが「1通貨」になっているためで、設定で変更できます(トレード設定を参照)。 - トレード回数:381回
エントリーして決済するまでを1回と数えます。日足で2002年から検証しているので、年に約20回、月に1〜2回のペースです。これが多いか少ないかは戦略次第です。 - 勝率:37.8%
勝率が低くてもトータルでは利益になる、という例です。最終的に利益が出なければ、勝率はただの参考値にすぎません。もっとも、勝率が70%以上あると気持ちのうえでは楽ですが。 - プロフィットファクター(PF):1.237
PF=総利益÷総損失 で計算します。1.237はまずまずですが、1.5以上あればより良いと言えます。 - 最大ドローダウン:51.66円(0.05%)
資産のピークから谷までの最大の落ち込みです。このケースでは純利益の4割強にあたります。損失が出るタイミングや証拠金、エントリーサイズによって変わりますが重要な指標で、大きな損失を出した時期があれば改善を検討したほうがよいでしょう。 - 平均トレード:0.31円
1回あたりの平均損益です(118.25円÷381回)。 - トレードでの平均バー数:14
1回のトレードでポジションを持っていた平均のバー数です。日足なので約14営業日、3週間弱の保有になります。
エクイティカーブの下では、表示する内容を切り替えられます。
- ドローダウン:赤の損失グラフの表示/非表示
- 資産:青の資産グラフの表示/非表示
- バイ・アンド・ホールド:初期資金をすべて買いポジションにして、検証期間中ずっと持ち続けた場合の資産推移の表示/非表示。FXではあまり使わない考え方で、株などの長期投資と比べるためのものです。
- 絶対値/パーセンテージ:金額表示と%表示の切り替え
パフォーマンスサマリー
概要で見た指標を、さらに詳しく表示したデータです。
概要になかった指標として、株や投資信託でよく使われる次の2つがあります。FXではあまり使いません。
- シャープレシオ
資産が効率よく運用されているかを示す指標です。平均リターンをリスク(リターンの標準偏差)で割って計算します。 - ソルティノレシオ
シャープレシオと似ていますが、損失方向の値動きだけをリスクとみなして計算します。利益方向の値動きはプラス要素なので、リスクに含めないという考え方です。
トレード一覧
1回ごとのトレード結果の一覧です。
一覧を見ると、最初のトレードは2002年6月28日で、約19年分の検証になっています。日足以上の時間足では、利用できるデータがすべて読み込まれるため、長い期間を検証できます。
「シグナル」の欄には、Pineスクリプトの中で付けたトレードの名前(識別子)が表示されます。
ヒストリカルデータの精度に注意
このGBPJPYのレートはOANDAのデータですが、古い期間には土曜日に1本だけ足があるなど、おかしな足が混ざっていることがあります。以前TradingViewに指摘したところ、データ提供元のものなのでTradingView側では修正できないとの回答でした。
OANDAのMT4でも同じようなことがあり、週足が6本になる問題を修正した影響かもしれません(なお、OANDA JapanのMT4では正しく表示されていました)。こうした問題はOANDAに限らず、ほかの業者のデータにもあります。古いヒストリカルデータはそれほど正確ではないと理解しておき、正確なデータが必要な場合は有料のデータを使うのが確実です。
トレード設定
ここまではデフォルト設定での結果でしたが、設定を変えれば実際のトレードに近い条件で検証できます。歯車アイコンをクリックすると、設定画面が開きます。
初期値は次のとおりです。
- 初期資金:10万
通貨はチャートの通貨ペアに合わせて決まり、GBPJPYなら10万円、EURUSDなら10万ドルになります。 - 基準通貨:デフォルト(JPY)
損益を表示する通貨です。GBPJPYの検証なのでデフォルトはJPYです。2021年の検証時点では、EURUSDの検証で基準通貨をJPYにすると円への換算がうまくいかず、おかしな結果になりました。通貨ペアと異なる通貨で表示する場合は、換算結果が正しいか確認しておくと安心です。 - 発注サイズ:1
FXの最低取引単位は1,000通貨が一般的なので、1通貨では小さすぎます。ここを1,000通貨や1万通貨にすると、損益も現実的な金額になります(単純計算で1,000通貨なら純利益は約11.8万円)。
設定画面ではこのほかに、手数料・スリッページ・ピラミッディング(同じ方向に重ねて持てる注文の数)なども指定できます。スプレッドなどの取引コストを近似的に反映させたい場合は、手数料やスリッページを設定しておくと、より現実に近い結果になります。
ソースコードを見る
TradingViewでは、公開されているストラテジーやインジケーターのうち、オープンソースのものはPineスクリプトのソースコードを見ることができます。
ストラテジー名にマウスを合わせて詳細アイコンをクリックすると、「ソースコード」を選べます。
「Pineエディタ」にPineスクリプトが表示されます。

比較的短いスクリプトなので、コードを読めばどんなロジックなのかが分かります。下は標準の「Stochastic Slow Strategy」を、現在のPine Script v6の書き方に直したものです(記事作成時はv4でした)。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//@version=6 strategy("Stochastic Slow Strategy", overlay = true) length = input.int(14, "Length", minval = 1) overBought = input.int(80, "OverBought") overSold = input.int(20, "OverSold") smoothK = 3 smoothD = 3 k = ta.sma(ta.stoch(close, high, low, length), smoothK) d = ta.sma(k, smoothD) co = ta.crossover(k, d) cu = ta.crossunder(k, d) if not na(k) and not na(d) if co and k < overSold strategy.entry("StochLE", strategy.long, comment = "StochLE") if cu and k > overBought strategy.entry("StochSE", strategy.short, comment = "StochSE") |
ストキャスティクスの%Kが%Dを下から上に抜けたときに%Kが売られすぎ(20未満)なら買い、上から下に抜けたときに%Kが買われすぎ(80超)なら売り、というロジックです。
5分足など短い時間足の検証
ストラテジーテスターで手軽に長期間を検証できるのは、日足や4時間足など長めの時間足です。日中足(分足・時間足)は、チャートに読み込めるバー数にプランごとの上限があるため、短い時間足ほど検証できる期間が短くなります。
| プラン | Basic(無料) | Essential | Plus | Premium | Ultimate |
| 日中足のヒストリカルバー上限 | 5,000 | 10,000 | 10,000 | 20,000 | 40,000 |
| 5分足でカバーできる期間(目安) | 約3.5週間 | 約7週間 | 約7週間 | 約14週間 | 約28週間 |
※日足以上の時間足では、利用できるデータがすべて表示されます。このほかに上位のプランもあります。最新の内容はTradingViewの料金ページで確認してください。
5分足は1時間に12本、FXは1日24時間・週5日なので、1週間で必要なバー数は 12×24×5=1,440本です。Premiumの20,000本でも約14週間(3か月あまり)、Ultimateの40,000本でも約28週間(半年あまり)しかカバーできません。
検証期間は最低でも10年、できればリーマンショック(2008年)以降は欲しいところです。8時間足は1日3本なので年に約780本、10,000本で約13年分になります。通常のバックテストでは、Essential・Plusなら8時間足以上、Premiumなら4時間足以上が、10年以上を一度に検証できる目安です。
Deep Backtesting(ディープバックテスト)を使う
現在のTradingViewには「Deep Backtesting」というモードがあり、チャートに読み込まれたバーだけでなく、その銘柄で利用できる過去データ全体を使ってストラテジーを計算できます。計算する日付範囲も指定できるので、5分足で長期間を検証したい場合はまずこちらを試すのがおすすめです。利用できるプランは料金ページで確認してください。なお、通常のバックテストとは計算結果が異なる場合があるとされています。
期間を分けて検証し、CSVでまとめる方法
期間を分けてストラテジーテスターの結果を出し、CSVに出力してExcelで統合する方法もあります。ストラテジーテスターの「ダウンロード」ボタンから結果をCSVで保存でき、トレード一覧のタブではトレードデータ、パフォーマンスのタブでは指標が、それぞれ別々に出力されます(ストラテジーデータをエクスポートするには?)。
期間を限定するには、Pineスクリプトにコードを追加します。次は2015/1/1〜2016/1/1の期間だけトレードする例です(Pine Script v6。エントリー条件は例として移動平均線のクロスを入れています)。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//@version=6 strategy("期間限定の例", overlay = true) // 検証期間(設定画面から変更できる) startTime = input.time(timestamp("2015-01-01 00:00"), "開始日") endTime = input.time(timestamp("2016-01-01 00:00"), "終了日") inRange = time >= startTime and time < endTime // エントリー条件(例:移動平均線のクロス) fast = ta.sma(close, 10) slow = ta.sma(close, 30) buyEntry = ta.crossover(fast, slow) sellEntry = ta.crossunder(fast, slow) if inRange if buyEntry strategy.entry("Long", strategy.long) if sellEntry strategy.entry("Short", strategy.short) // 期間が終わったらポジションをすべて決済 if time >= endTime strategy.close_all() |
開始日・終了日は設定画面から変更できるので、期間をずらしながら検証できます。なお現在は、ストラテジーテスター側でも結果を表示する期間を選べるようになっています。
短い時間足の検証は、MT4のストラテジーテスターを使ったほうが正確にできる場合もあります。ただし、その場合はMQL4でEAのコードを書く必要があります。
Pythonを使えばバックテストの自動化や最適化など色々なことができますが、かなりマニアックな世界になるので、この記事ではここまでにします。
まとめ
- ストラテジーテスターを使えば、Pineスクリプトを書かなくても、標準や公開のストラテジーで手軽にバックテストできる
- 純利益だけでなく、プロフィットファクター・最大ドローダウン・トレード回数もあわせて評価する
- デフォルトの発注サイズは1通貨なので、実際の取引単位に合わせて設定を変える
- 日中足はプランごとのバー数上限で検証期間が短くなる。長期間の検証にはDeep Backtestingを使う
- 古いヒストリカルデータには誤りが含まれることがあるので注意する
References:
TradingView
ストラテジーテスターのレポート|TradingView
日中の時間足の過去データ:バーの本数と上限について|TradingView
ディープバックテストとは何ですか?|TradingView
[PR]






















