MT4には自動売買、EAのバックテストができる機能がありますが、TradingViewも可能です。
既にアイディアがたくさん公開されているのでPineスクリプトを書かなくてもそれなりに検証できます。
ストラテジーテスター
TradingViewのストラテジーテスターを使って何ができるのでしょう
- テクニカル手法の有用性を確認
- 例えばボリンジャーバンドの逆張りでどのタイミングで入ると利益になる勝率が上がるとか、ダマシをどう回避するか等を過去何年にわたって瞬時に検証可能
- MT4のEA(自動売買ソフト)にもストラテジーテスターを使ってEAのバックてテストができますが、TradingViewはより簡単に検証できます。
バックテストするためにはPineスクリプトでコードを書いてテストするのが基本ですが、TradingViewには既にいくつかのストラテジーがデフォルトであります。
メニューの「fx インジケーター」タグから「インジケーター&ストラテジー」が表示されるので、「strategy」と検索すると以下のようなストラテジーのリストが上がってきます。
Ref: TradingView
内蔵はデフォルトでTradingViewに入っているのもので、それ以外にも一般ユーザーが公開したストラテジーがあります。
例としてMACD Strategyを表示してみると、
「ストラテジーテスター」のタブの下に
「概要」「パフォーマンスサマリー」「トレード一覧」があり詳しく評価できます。
概要
GBPJPY日足での「MACD Strategy」の結果
デフォルト設定なので、
- 初期資金:10万円
- 発注サイズ:1通貨(これは設定変更が必要)
- スプレッドや手数料、スリッページは考慮せず
(equity curve)と言われる資産増減曲線が表示され、青が利益、赤が損失です。
青いグラフが安定して右肩上がりであることが理想です。
- 左縦軸:証拠金+利益
- 右縦軸:損失
- 横軸:トレード回数
エクイティカーブの上部にある項目
- 純利益:118.25円(0.12%)
- 最終損益と損益率です。これは証拠金と1回のトレードが「1通貨」と少ないからで設定で調整できます
- トレード回数:381
- エントリーして決済すると1回。このテストは日足で2002年からなので3ケ月に2回のトレード頻度です。これは多いか少ないかは戦略次第
- 日足を短い時間軸に変えられますが、そうすると保存可能なバー数制限により検証期間が短くなります
- Basic:5000バー、Pro&Pro+:一万、Premium:2万
- 検証期間は最低10年、できればリーマンショック以降は欲しいので1回で検証できるのは8時間足以降になります。5分足はあまり参考にならない、あるいは期間を分割して追加検証するしかありません
- 勝率:37.8%
- トータルでの利益ですが「勝率が低くても利益になる」という見本。結果的に利益にならなければ勝率はただの参考でしかありません。もっとも70%以上だと気分的には楽ではありますが
- プロフィットファクター(PF):1.237
- PF=(総利益)/(総損失) の計算です。まあまあですが1.5あればBetter
- 最大ドローダウン:51.66円(0.05%)
- 損益カーブのピークから谷までで、このケースでは総損益の半分になっています
- この扱いは重要でありながら、損失の起きるタイミングや証拠金、エントリーサイズにより変ります。
- 大きな損失を出した時期があれば改善したほうがいいです
- 平均トレード:0.31円
- 1回あたりの平均利益
- トレードでの平均バー数:14
- エントリーするまでの平均バー数です。日足なので14日程度で3周間弱
エクイティカーブの下部にもあります
- ドローダウン:赤の損失グラフを表示/非表示できます
- 資産:青の利益グラフを表示/非表示
- バイ・アンド・ホールドでの資産増減の表示/非表示
- 初期資金の全てを買いポジションにして、そのポジションをテスト期間中保持したと仮定した場合に得られる想定リターンです
- これはFXでは使わない戦略ですが、株などの投資という意味です
- 絶対値とパーセンテージの表示/非表示
パフォーマンスサマリー
概要の詳細ですが概要で説明したものの詳細データです。
概要には無かったものとして株・投資信託関連でよく使われる指標があります。
FXではほとんど使いません
シャープレシオ:
資産が効率的に運用されているのかを示す指標で
平均リターンをリスク(標準偏差)で割った値として計算
ソルティノレシオ:
損失方向に進んだ時だけをリスクとみなして計算
含み益に進むことに関してはプラス要素であることから、マイナス要素のみ考慮してそのリスクを計算
トレード一覧
各トレードの結果の一覧です
- トレード期間:19年間
- これを見ると2002/6/28からのトレードとなっています。Proコースなので10000バーまでカウントでき、例えば8時間足にすると2008年からの検証となります
- 53週x5日= 265日が1年間のバー数とすると2008年からだと10000バーです
- このGBPJPYのレートはOANDAからのレートですが、古いレートには時々おかしな足があることがあります。土曜日に1本足があったり、以前それを指摘したのですが、提供されたものなのでTradingViewではどうしようもないということです。
- 実際にOANDAのMT4を使っていてもそういう事がありました。週足6本問題を解決するための修正の影響がでるのかもしれません。つまりあまり古いヒストリカルデータはそれほど正確ではないと理解しておくことです。尚、ONADA JapanのMT4は正しく表示されていました。またこういうのはOANDAだけでなく他の業者もそれなりにあり、ちゃんとしたデータは有料のところを使うしかありません。
シグナルはPineスクリプトに記述してトレードの識別子です
トレード設定
以上のバックテストはデフォルトの設定でしたが、設定を変更して実際のトレードを想定することができます。
歯車アイコンをクリックすると設定ダイアログが表示されます。
初期値では、
- 初期資金:10万円
- GBPJPYなので円ですがEURUSDにするとドルベースで10万ドルになります
- 基準通貨:デフォルト(JPY)
- 損益を表示する通貨単位、これはGBPJPYに対してテストしているのでデフォルトでJPYです。これをEURUSDの検証でJPYにするとおかしなことになります。毎回USDJPYのレートを計算しないといけないので。そこまでは自動でやっていない
- 発注サイズ:1
- 最低発注サイズは1000通貨が一般的ですから1は小さいです
- ここを1000通貨、1万通貨とすると約10万円の利益となり現実的になります
ソースコードを見る
TradingViewでは公開されているPineスクリプトやストレージのソースが見られます。
strategyにマウスをかざして詳細アイコンをクリックすると、ソースコードが選択できます。
「Pine エディタ」にPineスクリプトが表示されます。
スクリプトで比較的簡単なので
コードからどのようなロジックなのかを推察できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//@version=4 strategy("Stochastic Slow Strategy", overlay=true) length = input(14, minval=1) OverBought = input(80) OverSold = input(20) smoothK = 3 smoothD = 3 k = sma(stoch(close, high, low, length), smoothK) d = sma(k, smoothD) co = crossover(k,d) cu = 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") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) |
5分足の評価
TradingViewのストラテジーテスターでは、テクニカル手法の簡単な過去検証ができます。
但し、日足、4時間足以降の場合で、短い足での評価は期間が短すぎます。
例えば5分足で過去検証しようと思っても、保存できるバー数の限界があり、Premiumコースでも2万バーです。
Basic | Pro | Pro+ | Premium | |
利用可能なヒストリカルバー | 5K | 10K | 10K | 20K |
Reference: Tradingview Plans
1週間で必要なバー数は5分足の場合、
12x24x5 = 1440
2万バーでは138週分をカバーできますが
2年半程度です。Proでは1年と数か月しかカバーできません
面倒ですが、期間を分けてストラテジーテスターの結果を出してそれをCSVとして出力しエクセルで統合すれば10年分の5分足の過去検証はできないことはありません
ストラテジーデータをエクスポートするには?
但し、結果を保存できるのはPro+以降の機能です。
それと期間を限定するにはPineスクリプトのコードを追加する必要があります。
2015/1/1 ~ 2016/1/1 までの期間を限定するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Trade period year0 = input(2015, minval = 1900, maxval = 2100) month0 = input(01, minval = 01, maxval = 12) day0 = input(01, minval = 01, maxval = 31) year1 = input(2016, minval = 1900, maxval = 2100) month1 = input(01, minval = 01, maxval = 12) day1 = input(01, minval = 01, maxval = 31) startPoint = timestamp(year0, month0, day0, 00, 00) endPoint = timestamp(year1, month1, day1, 00, 00) isAvailable = startPoint <= time and time <= endPoint ... if(isAvailable) // エントリー条件等 if (buyEntry) ... |
短い足はMT4のストラテジーテスターを使ったほうがより正確に検証できるかもしれません
その代わりMQL4のコードを書く必要があります。
Pythonを使ったりすればバックテストの自動化や最適化ができたり色々可能ですが
マニアックな世界に入りすぎるのでここまで
References:
TradingView
ストラテジーテスターのレポート|TradingView
[PR]