スポンサーリンク

Pine Script(Pineスクリプト)入門解説(15)ストラテジーの「最適化」をめぐるTradingViewとMetaTraderの違い

はじめに

今回はPineScript入門ガイドの15回目です。前回は、TradingViewのストラテジーとバックテストの概要をご紹介しました。今回はストラテジーのパフォーマンスの「最適化」について、まとめたいと思います。

最適化とは

最適化(Optimization)とは、「ストラテジーの変数(パラメーター)をいろいろと試して、収益性や安定性の高いパラメーターの組み合わせを見つける作業」を言います。

MetaTraderでは、ストラテジーのことをEA(エキスパート・アドバイザー)と呼び、EAを開発してバックテストをするだけでなく、EAを最適化する機能があります。MetaTrader4(MT4)に最適化の機能はありますが、MetaTrader5(MT5)では最適化の機能がとても進化しています。したがって、EAの開発とバックテスト・最適化までをMT5で行って、実際のEAの運用はMT4(VPS利用)で行う方法が現実的であると思います。(私の自作EAは、このかたちで開発・運用しています。)

MT5による最適化は、本当に便利です。8コアのCPUでしたら、8つの作業を同時に動かせますし、さらにクラウド上の別のマシンを使ったりするサービスも利用できますので、MT4で数十時間かかる最適化作業も、MT5では数分で終えたりすることができます。

MT5による最適化については、別の記事として書きたいと思います。

TradingViewでストラテジーの最適化はできる?

一方、TradingViewの現行バージョンのストラテジー・テスターでは、いわゆる「最適化」のメニューはありません。

MetaTraderのようにいろいろなパラメータの最適な組み合わせを自動で見つけることは、TradingViewではできません

自動最適化は、マシンリソースや時間をとても消費する作業なので、クラウドで動いているTradingViewの機能としては、そもそも馴染まないでしょうね。

しかし、「手動」による最適化作業は、TradingViewで可能です。しかも、これが意外な可能性を秘めていることをこれから説明します。

サンプル・ストラテジーのバックテスト

前回記事で作成したサンプル・ストラテジー「EMAクロス+固定TP/SL」を例にして、TradingViewによるストラテジーの「手動」最適化の作業を説明していきたいと思います。


このストラテジーのロジック、およびバックテストの前提は、以下の通りです。

  • 短期EMA(25期間)と長期EMA(75期間)のゴールデン・クロスで買いエントリー
  • 短期EMA(25期間)と長期EMA(75期間)のデッド・クロスで売りエントリー
  • 利確は、70pips固定
  • ロスカット(損切り)は、50pis固定
  • 短期EMAおよび長期EMAの期間、利確pips、ロスカットpips、およびバックテストの開始日・終了日は、入力項目として後で変更可能とします
  • バックテストの前提:
    • 対象通貨ペア・時間足:ユーロドル・1時間足
    • 対象期間: 2019年1月1日~2019年12月31日までの1年間
    • 基準通貨:円
    • 初期資金:100,000円
    • オーダーサイズ:1,000通貨
    • 手数料:1,000通貨のオーダーの1往復(エントリー・決済)で60円
    • ピラミッディング:無し
    • スリッページ:無し

バックテストの結果は、以下の通りでした。

  • 純利益:8,865円
  • 総トレード数:66
  • プロフィットファクター(PF):1.734

 

上記の結果は、テスト期間が1年だけトレード数も少なすぎプロフィットファクターが良すぎなので、実用に耐えうるストラテジーに改良するためには、ここから長い検討が必要です。

サンプル・ストラテジーの「手動」最適化

上記のサンプル・ストラテジーについて、最適化の対象として変更できるパラメータは、以下の通りです。

  • バックテストの対象期間(変数は、開始年・開始月・終了年・終了月の4つ)
  • 短期EMAの期間(初期値は25)
  • 長期EMAの期間(初期値は75)
  • 利確の固定pips(初期値は70)※ポイント表示のため700
  • ロスカットの固定pips(初期値は50)※ポイント表示のため500

ここでMetaTraderでは、変更するパラメータの開始値・増減値・終了値を設定して自動最適化を行います。(バックテストの対象期間や通貨ペアや時間足などは、別途設定します。)

一方、TradingViewでは、以下の図のように、設定ダイアログの入力値を手動で増減させることで、即時に、純利益やプロフィットファクターの変化を確認できます。

まず、各種パラメータ(短期・長期EMAの期間や利確・損切りのPips数など)を設定ダイアログ上で増減させると(上図の①)、その都度、純利益やプロフィット・ファクターの変動を即座に確認できます(上図の④)。また、通貨ペアの変更(②)や時間足(③)を画面上で変更しても、同様に純利益やプロフィット・ファクターの変動を即座に確認できます。

この「手動のパラメータ変更と即時の結果確認」は、MetaTraderには無い新鮮な感覚があります。パラメータのあらゆる組み合わせは試せなくても、俯瞰的で簡易的な最適化は可能です。また、ストラテジー(EA)の開発に特化せずに「過去データの検証」という観点では、むしろTradingViewの方が可能性があるように思います。

今回のサンプル・ストラテジーについては、以下のような俯瞰的・簡易的な最適化を実施しました。赤い行が最もパフォーマンスが良い結果となりました。

通貨ペア 時間足 短期EMA
期間
長期EMA
期間
利確
pips
損切
pips
純利益 トレード数 プロフィットファクター
EURUSD
(初期値)
H1 25 75 70 50 8,865 66 1.734
EURUSD H1 10 75 70 50 4,508 106 1.248
EURUSD H1 25 150 70 50 3.150 56 1.266
EURUSD H1 25 75 90 40 12,331 66 2.068
GBPUSD H1 25 75 70 50 2,580 74 1.133
GBPUSD H1 25 75 90 50 8,279 74 1.424
USDJPY H1 25 75 70 50 -117 88 0.993
EURJPY H1 25 75 70 50 -657 79 0.966

 

ユーロドルは最も流動性が大きいので、テクニカル指標が最も効きます。単純なロジックでも、いろいろな検証ができると思います。

なお、パラメータを大量に設定した複雑なストラテジー(EA)を作って、MT5で数万~数10万個の組み合わせから最適化したとしても、「過剰最適化(カーブフィッティング)」という状態に陥ると、過去のある特定の期間だけ通用して、未来の期間には通用しない、ということがよくあります。

TradingViewとMT5の併用

あるロジックを思いついたら、まずはTradingViewのストラテジーをつくって大枠の有効性を検証して、いけそうであれば、MetaTrader(特にMT5)でさらに詳細の開発・最適化を行う、といった方法もありではないかと思います。

 

タイトルとURLをコピーしました