EAラボラトリー::FX自動売買システムのWin-Win型研究開発サイト

タグ「バックテスト」が付けられているもの

こんばんは。

先ほど研究員の皆様全員にメールをお送りいたしましたが、重要なことですのでここにも書きます。

FORUMにて、パラメータの設定注意が話題になりました、 http://www.ea-labo.com/support/viewtopic.php?f=41&t=389&start=10#p8107

●対象プログラム
 EA:Microbeeee および Pandeeeemic
●内容
 バックテスト時にサマータイムを考慮させるために使用する”Use_DT_Adjust_US_onBT”の機能ですが、”onBT”と書いてありながら、実際には運用中にもこの機能が有効となっており、UTC_OFFSETに1時間のサマータイムの時差が加えられてしまう。


今日から、US圏のブローカーはサマータイムに入ります。FXDDもそれに該当し、この現象が確認されました。機能の性質上、通常は”false”に設定されている方がほとんどとは思いますが、他の研究員のプリセットファイルをそのまま適用している方などは、注意と確認が必要と思います。

また、運用時には完全にこのパラメータを無視するよう、先ほどEAをバージョンアップさせましたので入れ替えをお勧めします。

最新EAのバージョンは、
 Microbeeee 2.4.4 Beta
 Pandeeeemic 2.11.2 Beta
です。

よろしくお願い致します。
 

てな訳で、また今日も新企画のお話ができませんでしたが、次回こそはお伝えできると思います。

それではEA弄りTimeに入ります。。。

こんばんは。いや、おはようございます。

最近はホントに忙しくて、EAタイムに入る時間がこんなに遅くなってしまいます><。睡眠3時間くらいです><。

そんな中でも、研究員の皆様が頑張って検証をしていることや、バージョンアップを楽しみにしていること等のうれしい応援メールをたくさん頂き少しでもと頑張っています。

 

さて今日は、最近値動きが得意なパターンであり、スプレッドが低く安定してきていますEURCHFですが、この通貨ペアに先日対応させましたClab_EURGBPの最適化を図ってみましたので経過を追って書こうと思います。普通のことをしているだけだと思いますがengineeeerがどうやって最適化をしているのか参考にしてみてください。非公開パラメータの調整も含まれますので一部わかりやすく伏せさせていただきます。

とりあえず、今回の最適化の目的は、
トレード回数を倍くらいに増やしたい
ということです。

私は多次元のOptimize(複数個所のパラメータ変化の組合せによる最適化調査)はあまり行いません。理由は、時間がかかること、Optimizeパラメータの設定ミスを途中でなかなか発見できないこと(終ってから「あっ><。この2時間はいったい・・・・。」みたいなことによくなるから)、それぞれのレポート内容が細かく見れないこと、各パラメータ独自での効果・変化を見落としがちになることです。このミスは、カーブフィッティングに繋がります。でも一番の理由は、考えながら楽しんで最適化を行いたいからです。OptimizationがOnでは、グラフが出ません。見ててつまらないです。

カーブフィッティング…短いスパン(少ない要素数)で好成績を確認できるようなパラメータの最適化。短いスパンで好成績だっただけで、長いスパン(十分な要素数)で見るとその最適化が逆効果だったりする。しかし、どれくらいのスパンを短すぎと判断するかはトレーダーによって実にさまざまなため見解の相違が見られる。EAの調整でもっとも大事なところでもある。by engineeeer)

ということも踏まえてですが、あまり時間も無かったので、今回は以下のような段階でテストしてみました。

トレード回数を増やすためには、フィルターの緩和の手などもありますが、今回はエントリーに関わる内部の非公開パラメータの一つの調整で行いました。乖離の尺度を一部を下げてみるって事ですね。それに伴い、TP(target/hidden)を合わせこんで、Trades(トレード回数)、PF(プロフィットファクター)、損益(Profit)、勝率(won)、の4つの結果で比較していきます。以前に記事で書いた、ドローダウンですが、SecretCutter2と他損切りエンジンに任せていますので、この程度の調整ではあまり気にしていません。

最適化以外のパラメータですが、
現時点のバージョンClab_EURGBP 5.1.0 Betaでのデフォルトパラメータから調整したのは、
トレード時間(20-23)、MaxTrades(6)、SecretCutter2(true)だけです。

Metatraderテスト環境は、
FXCM-NY Real(生データ) 2009/3/23~2009/7/25 スプレッド5固定(2桁ブローカー表記) 0.1ロット固定 EveryTickです。

まず、デフォルトでのバックテスト。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.8 91.21

以前、スプレッドは7で固定してのテストだったので、スプレッドの差分2pipsは多く取れるだろうということで、そのテスト。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71

ちょっと、勝率が落ちますが、Profitが20%以上も増加しているので現行バージョンではTP=6/7がよさそうですね。それを踏まえて、乖離パラメータを弄ります。TPも感でずらしてますw。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75

勝率は前回とあまり変わっていませんが、PFが落ちています。VirtualTPでの決済が行われていない可能性があります。そこでTPを下げてみます。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75
 -1 4/5 118 7.14 297.10 86.44

もっとPFが悪くなってしまいました。

乖離ではないところでエントリーしてしまっているということですね。ここで、default&TP5/6はどうなのか気になったので、そのテストをしました。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75
 -1 4/5 118 7.14 297.10 86.44
 default 5/6 91 10.32 295.30 87.91

PF勝率両方とも、先の二つのdefaultチェックの間になっていますので、乖離レベル判定はdefaultでおおよそベターのようです。でも悔しいので、間を取って・・・

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75
 -1 4/5 118 7.14 297.10 86.44
 default 5/6 91 10.32 295.30 87.91
 -0.5 5/6 104 8.71 311.60 83.65

一気に、勝率が落ちてしまいました。乖離レベルの判断はやはりdefaultがいいみたいです。
それでも悔しくて、じゃあ今度は逆にもっと乖離レベルを甘くしたら?ってことで、

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75
 -1 4/5 118 7.14 297.10 86.44
 default 5/6 91 10.32 295.30 87.91
 -0.5 5/6 104 8.71 311.60 83.65
 -1.5 5/6 129 5.63 325.90 82.17

お?トレード回数が2割も増えたのに、勝率はあまり変わらない。ならばここでTP前後に変化させて、2パターン調べてみる。

 乖離レベル TP(virtual/hidden) TradesPF Profit(USD) won(%)
 default 4/5 91 12.38 270.80 91.21
 default 6/7 91 10.38 331.50 85.71
 -1 5/6 118 7.79 330.50 84.75
 -1 4/5 118 7.14 297.10 86.44
 default 5/6 91 10.32 295.30 87.91
 -0.5 5/6 104 8.71 311.60 83.65
 -1.5 5/6 129 5.63 325.90 82.17
 -1.5 4/5 129 6.27 295.50 85.27
 -1.5 6/7 128 5.49 338.20 79.69

TP4/5では乖離レベル-1とあまり変わりませんね。また、TP6/7ではProfitはこの中で最大ですが、勝率は70%台に突入してしまっています。defaultから40%も取引が多くなっているのに、利益は25%しか増えていません。そしてこの勝率かぁ・・・。

 

という具合です。まあ、たったこれだけ?という方も多いとは思いますが、初心者の方にも最適化というのを見比べて欲しかったので書きました。

この段階で考察できることは、
取引回数を増やして多少の利益増は臨めるが、リスクも増すのでお好みで。ということになりますかね。(engineeeerの金銭感覚ですが) しかし、他のパラメータも含めての調整でプラス方向へ傾かせることができそうだという期待と課題も残されています。研究員の皆様自身でも検証できるように、いつかこの乖離レベルのパラメータの一部を公開するようにしたいと思います。
また以前にも申し上げましたが、人によって期待したり楽しいと感じるトレード回数や勝率は違います。defaultはあくまでengineeeerの環境でのお好みセッティングの一つですので、研究員の皆様個人でお好きな形に変えるといいと思います。楽しいシステムトレードにすることは継続するために必要だと思います。

また、PF勝率が比例して動かないことから、EURCHF通貨ペアで特徴的な、一瞬の髭を捕まえることが一番有効なのだということが窺えます。EURGBPと同じ手法のようですがこのテストをすると明らかに経過が違います。なので、非公開パラメータ部分はEURGBPと全然違います。何かを何倍したとかいう調整だけでは他のEAと変わらなかったのでそのような単純な事はしていません。

 

どうでしょう?EAなら、いやMetatraderなら通貨ペアの特徴というものも、こうして目で見て理解することができます。

度理系なengineeeerはこうしてわざわざ数値を出して考察することでしか特徴を見出すことしかできないかもしれません。感覚でモノを言われると、「もしかしたら・・・」と疑ってしまいます。所詮バックテストなのでしょうけども、理屈があるのでこの方が納得できます。そんなことも今回言いたかったのです。
でもきっと、文型の方からこんなことしなくてもぱっとチャートを見ただけで通貨ペアの特徴なんかがかなりの精度で考察できるのでしょうね。文型の方の能力恐るべしですね。
文系理系の問題じゃないのかな?ただの考えすぎか、慎重すぎるのか、理屈っぽさの問題かもしれませんね。


世の中のすべては0と1で表すことができると唱えたシャノン様に一歩ずつ近づいているのなら嬉しい限りです。どうぞ夢の中で大きくうなずいて下さいませw。

うぅ完全に朝だ。。。

こんにちは。つい先日配布から配布いたしております。Clab_EURGBPですが、どうでしょうか?バックテストの程は。FORUMを見る限りではまあまあの評価とみてよろしいでしょうかね。特に動作には問題が無いようで、今回のengineeeerの目的の一つは達成ですかね。
各ブローカーによる通貨ペアエクステンションの件は、遅れ遅れで申し訳ございませんでした。私の環境での仕様にウェイトがかかっていたためです。今後新たに出てくるかも知れぬブローカーにすべて対応するはずです。問題があればまた遠慮なくおっしゃって下さい。一部ブローカーでのリアル口座アカウント名の対応は、セキュリティ上プログラム本体とキーファイルの両方の対応が必要です。
現在、ゲインキャピタルでは、”Fortune capital: name”の場合と、"Fortune capital : name"の場合(コロンの前に半角スペースが入るかはいらないか)の違いを報告確認いたしております。報告いただいた方へは直接メールで対応しております。ゲインキャピタルでアカウントネームエラーが出る方は、メールにてご連絡下さい。今現在配布しておりますキーファイル・本体プログラムは発覚問題はすべて対応済ですのでご安心下さい。

 

さて今回は、特にバックテスト時の参考になる調査結果が出たのでご報告いたします。
以前当ブログでもご紹介させていただいた、FXDDがHP上での提供いたしておりますヒストリーデータのお話です。HPはここですね。

バックテストに使用するヒストリーデータは手に入れるには、多くのブローカーでMetaTrader内のツール”History Center”からMetaTraderの開発元のMetaQuotes社のデータをダウンロードするようになっています。当然このデータはブローカーの値付けでは無いので、これを使用してのテスト結果は信頼度が低いです。
しかし、FXDDでは自社の値付けデータ?として先ほどのHP上で各通貨ペアの1分足のデータを提供しています。

ところが、

と書いた理由となる発見をしてしまったのです。下の二つイメージを見てください。
 

  fxdd_real_pageup.png

左が、FXDDのHP上で提供しているヒストリーデータです。
右が、FXDDのリアルアカウントで、ページスクロールをして得たヒストリーデータです。
デモとリアルでのページスクロール取得データは同じものになりました。

違いますよねぇ。しかも、左の方が値動きがあります。ローソク足見ると、髭が長いということです。

確かにMetaQuotes社のデータとは違います。しかしこれは何のデータなのでしょうか?出来高も相当違いますよね。もしかして、データセンター毎に収集したものを集約しているのでしょうか?

私の収集か操作ミスで無ければ、以前書いた記事を一部修正しなくてはなりませんね。 
これでは、バックテスト結果の信頼性に疑問が生じますね。まあ確かにMetaQuotes社のデータを利用するよりは良いと思いますがね。特にスキャルピング系のEAともなるとこの影響は計り知れないものとなります。
やはり、一番信頼度の高いデータは生で取得したデータということになりましょうかねぇ。スクロールで取得したデータも実は・・・かもしれませんね。
生で取得したデータはとっても貴重だと思います。MetaTraderの不具合やリフレッシュで再インストールとなってもヒストリーデータはきちんと移植したほうがよろしいと思います。そのうちネットで売買され出すかもしれませんね。

軽くHPで検索してみましたが確言が無かったので調査結果を書きました。他のブローカーではどうでしょうか?情報をお持ちの方・ご存知の方コメント下さい。

こんにちは。本日2枚目のブログになってしまいましたが、どうしても書きたくなってしまったので書かせてください。

先日ゲインキャピタルの対応で、正直その時点でengineeeerはこのブローカーを意識しました^^; EA作りの毎日でブローカーのことは頭のどっかに行ってました。ましてや日本のブローカーなんて・・・ って固定概念があって調べもしませんでした。というか登場した当初悪いうわさで堪えなかったんですよね。

今回の人気っプリを見て、先ほど近日配布となるClab_EURGBPのバックテストを行ってみました。

すると、なんと言うことでしょうか。今までFXCMでのバックテストばかり行っていましたが、どういうわけかゲインキャピタルとの相性が良いことをいまさらながら発見いたしました。

SpreadLoggerで先ほどスプレッドのログを取って見たところ、スプレッドは1~4でたまに5という感じでしたので、MySpreadExecutionでスプレッドを5に固定して、バックテストを行いました。結果は以下です。

2009.05.01 - 2009.07.09(別窓表示)(FortuneCapital,Demo,Spread=5固定,単利0.1ロット)

結構いいのではないでしょうか?
それとも調べてないからわかりませんが、RealとDemoでは値付けやスプレッドが違うのでしょうか?
Clab_EURGBPには大DDを防ぐために、他同系EAにはない決済エンジン(自分で言ってる><w)がいくつかついてます。その機能をOFFにすると、このテスト期間中はさらにPFが良くなります。(長い目で見るとやはりONにすべきだと思いますが・・・)

期待できそうです。楽しみにお待ちくださいね。

昨日、GoldSpider_USDJPYを配布いたしました。EAの内容については数日後に書こうと思います。

次に配布しようとしてますのは、おなじみユロポンスキャルピングEA

【Clab_EURGBP】

です。この系統のEAは有名なものにFAPTURBOがあります。またYour_LuckyやThunder4WD、M16A4などもこれにあたります。今となってはスプレッドがきつきつですのでブローカーの癖にあわせてうまくパラメータを調整しないと勝てませんよね。engineeeerがこれを開発したのが数ヶ月前になりますが、その時点ではスプレッド5でのバックテストで例に上げたEAをどれをも突き離していました。なかなか稼いでくれているEAです。
現時点でもリアル運用はしていますが(今日はエントリーありませんでした)、公開にあたってここ最近の相場でのバックテストを行ってみました。
最近はなかなか渋いですね。やはりどんどん稼げなくなっていっているみたいです。持ち味だったパラメータを調整してPF3.0は出せましたが、あと付けですからね。何とでも出来てしまいます。この先どうなるでしょうかね。engineeeerはFXCM-NYでトレードしています。FXCM-UKはなぜか変動が小さいです。サポートセンターに電話して聞いて見たのですが、「そんなことは無い!」の一点張り。証拠撮って送ってくれって言ってます。みんなで送り付けましょかw

バックテスト結果、2009/06/01-2009/07/07 (別窓表示)(FXCM-NY,Spread=3.2固定,単利0.1ロット)

プログラムに詳しい方ならわかると思いますが、わざとバックテストを重たく作っている場合もあるはずです。(技術・知識不足で重たくなっているのが多いでしょうけどね。) バックテストは高速でないとengineeeerは嫌です。そのために何行もプログラムを付け足して日々最適化に励んでいます。
 

先ほど、engineeeer的には微妙ですが、GoldSpider_EURJPY が1勝しました。
たまには自慢画像を掲載してみます。

200907070001.png

エントリーが微妙ですが、決済はうまいことやってくれて良かったです。

順次配布していく予定ですのでお待ち下さいね。

Strategy Tester Report(ストラテジーテスターレポート)日本語訳すると、運用試験報告。

今回はバックテスト結果であるこのストラテジーテスターレポートの見方と、それを利用した効率の良いEAのOptimize(オプティマイズ)最適化について書こうと思います。間違った解釈をしている方が多いですのできちんと抑えておきましょう。また、ここを頭に入れておくことで使えるEAと使えないEAの区別ができるようになっていただければ幸いです。ネット上で安全に使えるEAというのはなかなかお目にかかれませんよ。

Strategy_setsumei.jpg

 

これは今開発検証中の、Monkeyシリーズのポン円Verのあるテスト結果です。パラメータはすべて削除してあります。注文ロットは固定で0.1ロットです。
まずは各項目の説明です。

  1. Bars in test ・・・ テストをしたBarの数
  2. Tick modeled ・・・ テストで使用したティック数
  3. Modelling quality ・・・ テストで利用したティックの割合
  4. Mismatched charts errors ・・・ 試験時間足と測定に使用に使用した時間足データとの相違数
  5. Initial deposit ・・・ 初期準備額
  6. Total net profit ・・・ 総純損益(純利益-純損失)
  7. Gross profit ・・・ 純利益
  8. Gross loss ・・・ 純損失
  9. Profit factor ・・・ プロフィットファクター(総利益/総損失)
  10. Expected payoff ・・・ 1トレード当たりの期待損益(総純損益/総トレード数)
  11. Absolute drawdown ・・・ 初期投資額からのドローダウン
  12. Maximal drawdown ・・・ 最大ドローダウン(最大金額)
  13. Relative drawdown ・・・ 相対ドローダウン(最大比率)
  14. Total trades ・・・ 総トレード数
  15. Short positions (won %) ・・・ 売りトレード数(勝率)
  16. Long positions (won %) ・・・ 買いトレード数(勝率)
  17. Profit trades (% of total) ・・・ 勝ちトレード数(率)
  18. Loss trades (% of total) ・・・ 負けトレード数(率)
  19. Largest profit trade ・・・ 1トレード当たりの最大利益
  20. Largest loss trade ・・・ 1トレード当たりの最大損失
  21. Average profit trade ・・・ 勝ちトレードの平均利益
  22. Average loss trade ・・・ 負けトレードの平均損失
  23. Maximum consecutive wins ・・・ 最大連続勝ちトレード数(利益)
  24. Maximal consecutive losses ・・・ 最大連続負けトレード数(損失)
  25. Maximal consecutive profit ・・・ 最大連続利益(勝ちトレード数)
  26. Maximal consecutive loss ・・・ 最大連続損失(負けトレード数)
  27. Average consecutive wins ・・・ 平均連続勝ちトレード数
  28. Average consecutive loss ・・・ 平均連続負けトレード数

 

のようになります。とても便利ですよね。

さてここで、このテスト結果のいくつかのパラメータに注目して、EAの最適化をしていくことを考えます。
あくまで、engineeeerのやり方でもありますがまあ見て下さい。基本的に重要であるのが、

9.  Profit factor ・・・ プロフィットファクター(総利益/総損失)
12.  Maximal drawdown ・・・ 最大ドローダウン(最大金額)
13.  Relative drawdown ・・・ 相対ドローダウン(最大比率)
14.  Total trades ・・・ 総トレード数

になります。目標の目安ですが、

 

Profit factor は、一般的に2.0以上あれば優秀であると言われています。engineeeerもそう思います。というか、3.0やそれ以上のPFをたたき出すEAにはろくなものなありませんし、ろくな結末がありません。この辺は後で説明します。

 


Maximal drawdownRelative drawdownですが、これが一番大事です。かつ、皆さんとらえ違えているところだと思います。説明します、
前者はレポート画像のの場所にあたります。後者はの場所にあたります。どちらも山の頂上から谷の最下点以下までの金額差になります。
ここで今、最下点以下と書きました。そうです、その通りなんです。グラフを見ると青と緑の折れ線グラフがあるのが分かりますね?青はBalance(口座残高)、緑はEquity(純資産)を表します。こう書くとわかりにくいですが、

Balance(青)は、オーダーを出しても減りません、そしてオーダーが決済されて始めて増減されます。
Equity(緑)は、オーダー時にブローカーに預ける証拠金分がすぐ引かれます、そして当然オーダーが決済されるとロスカットで無い限りもちろん証拠金は口座に戻ってきますのでその分元に戻ります。

金額差と書いたのもこの辺を分かってもらうためにあえてあいまいな言葉を使いました。
ということは・・・、私たちが最悪の事態を想定して考えなければならない、余剰証拠金の推移がグラフに出ていないのです!

テスターレポートの金額差(ドローダウン)は、余剰証拠金の高低の金額差です。

そして、なぜ Maximal drawdownRelative drawdown が違うドローダウンの場所になっているかです。ここも捉え違えている人が多いです。金額と割合を入れ替えただけとか言っている人もいます。違いますよ^^; これは、金額と割合のどちらに注目しているかで取り扱うポイントが違うからです。
 

 

 

Relative drawdown は、テスト期間中に起きたドローダウンの中で、上記の割合が最大になったときのドローダウンの割合を算出しています。その括弧内の金額は、そのドローダウン額です。

グラフの横軸は決済したオーダーの順番です。その最中に他にいくつのオーダーがあって、それらがどれだけ損失を抱えているかはグラフからは分かりません。しかし、グラフには出ていなくても、数値としては Maximal drawdownRelative drawdown として算出されているのです。EA視点で言いますと、よくあるナンピンをフル活用してマネーマネジメントしているEA(ナンピンは使い方を間違わなければ効果バツグンです。数学的に考えての話です。)は、ストラテジーのグラフで見るときれいな右肩上がりの一直線を出します。でも実際の口座内の動きは恐ろしいものです。そんなときこのRelative drawdown をチェックしてください。

もう一度話を戻します。

上の画像での、
Maximal drawdown) 4684.64(12.90%) は、
最大ドローダウン額=4684.64$
最大ドローダウン額/ドローダウンが起きる前の口座残高×100=最大ドローダウン率(%) ですので、
4,684.64/36,315.04×100=12.90% となります。

Relative drawdown) 27.86%(2876.39)は、
ドローダウン額=2876.39$
ドローダウン額/ドローダウンが起きる前の口座残高×100=ドローダウン率(%) ですので、
2876.39/10324.44×100=27.86% となります。(初期投資額より324.44$多いのは、一瞬プラス損益が出たからでしょう。)

このデータから推測しなければならないことは、このテストの注文ロットは固定で0.1ロットですので、グラフのどの位置の事象もどこでも起き得ると考えなければなりません。ですので、
最大ドローダウンがもし、EAスタート直後に起きたらどうなるかを考えなければなりません。テストの期間を①の直前からに設定してテストしてみると分かります。Relative drawdown 50% になります。スタートしていきなり口座資金が半分になります。

また、Maximal drawdownRelative drawdown の両方が小さい数値を出しいてる場合は、初期投資額を見てみてください。グラフの縦軸の最下段は0ではありません。ストラテジーの結果で自動調節されています。
どうでしょう? 50000$とかになっていませんか?500万円ですよ?大金スタートですねぇ。それならドローダウンの値が小さくなるのは当然です。

ここまで来て初めて、投資計画を考えます。そのままのEAのパラメータで取引を行うなら、テストから算出される最大ドローダウンの十倍くらいの資金を用意しましょう。でなければ、パラメータを変更して、最大ドローダウンが小さくなるようにしましょう。小さくならなければそのEAはあなたに適していません。破産する前にしかも1銭も市場にお金をさらさずに判明してよかったですね。(有料EAならEA購入代金分は損しちゃいますけどね)

 

次に、総トレード数ですね。

これはですね、2つの点から考えます。
投資心理面 と 統計学的見解 です。

PFもDDもバッチリだけど、取引は1回/月程度・・・ ってどうですか?
engineeeerはイヤです。両方の見方からです。月一回の取引のために、PCを24時間フル稼働ですか?なら、ここぞとばかしの指標発表時にスキャルを一回やったほうがいいのではないでしょうか?投資という枠から外れるような気がします。でももっと納得がいかないのは、統計学的見解からのことです。
1回/月ってことは、過去5年のバックテストを行っても、60回の取引データしかないことになります。たった60回のバックテストによる統計を信じる気ですか・・・。

というわけで、engineeeerの作るEAも最低でも月20回は取引できるようにしています。なら平均1日1回は取引を見れるでしょう?

 

これらをTotalで見て、もう一度PF(プロフィットファクター)を考えます。すると、不思議ですね~。やっぱり年間ベースでPF3.0を超えたりすることはなかなかないです。engineeeerがまだ未熟で作れていないだけかもしれません。作れている人がいたら是非教えてください。w(教えてくれるわけはないでしょうがねw)

そして、仮に偶然ではなく作れたりしたとします。そのようなものは、engineeeerは攻略法的EAだと思っていますので、誰かに知られれば、すぐさま連鎖的に広がっていきます。そしてなんらかの対策が打たれ終焉を迎えます。最近のユロポンのようにですね。
そう、出る杭は打たれるんです。私も本職でそんな経験をいっぱいしてきました。
この研究所発のEAが将来出たとしたら、努力した私たち研究員だけで使っていきたいですね。そうできるように、アルゴリズムがばれたりしないようengineeeerは頑張ります。

 

Maximal drawdown は、テスト期間中に起きたドローダウンで最大の金額差になったところを指し、その金額を算出してます。その括弧内の割合は、そのドローダウンが起きる直前の余剰証拠金の最大額を100%としたときのドローダウンの割合です。

 

前回に続き、バックテストの豆知識というかお得情報を書きます。

MetaTraderはバックテスト時、スタートを押した瞬間のサーバーのスプレッドに準じてAskデータが作られ、固定スプレッドとしてテストが行われます。
これがとても肝心なところです。知らない方、また困っている方が多数いらっしゃることと思います。
そうなんです。MetaTraderはAsk(買い)のデータが保存されていないのです。そしてだからこそ当然、変動スプレッド制を採用しているブローカーが多い中、スプレッドが固定されてバックテストが行われます。

さらに言うと、週末市場がお休みのときに、バックテストをしようとすると金曜の深夜市場がクローズしたときのスプレッドでしかバックテストができません。

短期トレードでは、スプレッドの影響が大ですよね。それなのに、スプレッドの状況がこのようにリアルと全く違うことはバックテスト結果の信頼性とは相反する要素です。

そこで、
engineeeerは、この問題を打開すべくMetaTraderのスクリプトを同志には無料配布しています。
このスクリプトは指定通貨ペアのスプレッドを自在に変化させることができるすぐれものです。サーバーオフライン中でも関係ありません。よく他の方が実践されている、『スプレッドの数値がバックテストしたい値になった瞬間にマウスをクリック』なんてする必要はありません。

最近変動スプレッド制を採用しているブローカーが増えてますよね。普段はスプレッド1でも急な値動きがあったり、逆に取引が薄い時間帯になるとスプレッドが大きくなります。そういった事象に耐えうるEAのパラメータ設定はこのスクリプトが大変役に立ちます。是非ご活用下さい。

バックテスト方法は、ODLさんのHPで詳しく書かれていますのでそちらを参考にしてください。
www.odls-manual.jp/mt4/07/01.php

重要かつもっと掘り下げた説明を何点かしていきたいと思います。バックテストの基本ロジックを理解して、効率のいいバックテストを行えるようになりましょう。

今回はテストモデルに関してお話いたします。
テストモデルとは以下の画像の、”モデル”の部分のことですね。

tester.jpg

 モデルは現時点で3種類あります。

  • Open prices only
  • Control points
  • Every tick

ですね。どんなモデル(テストロジック)なのかきちんと理解する必要があります。詳しく説明しますね。

Open prices only

選択したタイムフレーム(時間枠)の4本値のみを使用します。3つの中で一番速いバックテストですが、バーの内部の細かい値動きは全く考慮されませんので、EAによっては検証にならない可能性があります。バーの始値でエントリーするようなEAだとこのモデルでも問題ありません。

Control points

選択したタイムフレームの一つ細かいタイムフレーム(例えば4Hなら1H)までを使用します。
バーの内部の値動きがある程度は考慮されるので、Open prices onlyよりは信頼度の高いテストが行えます。

Every tick

1分足のデータを使用し、さらに仮想でTickデータを作り出しバックテストを行います。
当然、3つの中で一番遅いバックテストですが、信頼度は高いです。

 

先に書きましたとおり、MetaTraderにはTickデータのバックアップはありませんので、リアルさながらの・・・とまでのバックテストはできませんが、超最短スキャルピングEAみたいなものでなければ、Every tickでのテスト結果はなかなか信頼・期待のもてる重要参考になるのではないかと思います。とはいえ、非常に時間のかかるテストモデルですので、Control pointsで一度大まかなパラメータの枠決めをしてから、次にEvery tickでテストするといいでしょう。

前回は短期間(3ヶ月ほど)ではありますが、信頼性の高いブローカーそのもののデータ取得方法と整理について書きました。今回は、長期のデータを取得する方法について書きます。
ちょうど、前回の記事『バックテスト方法 ① (全ブローカー対応)』の方法②と読み替えてください。

②ヒストリーデータの取得

長期のヒストリーデータの取得を行います。ここではまず、MetaTraderの開発元であるMetaquotes社のヒストリーデータの取得方法についてご紹介いたします。Metaquotes社のヒストリーデータは実際の使用ブローカーのデータとは違いがありますので、特にスキャルピングEAなど短期売買のバックテストは信頼性が欠けます。ですが質より量的な考えが該当する目的であったり、長期足のスイングトレードEAなどでは重宝するデータになることでしょう。

  1. ”ツール>History Center”を選択します。以下のダイヤログが表示されます。
  2. 通貨ペアの一覧から、取得したい通貨ペアの1分足(M1)を選択します。(
  3. ”Download”を押し、次に出てくる注意書きダイヤログ(「ご使用の実際のブローカーのデータとは違いますよ~」という内容)を”OK”で承諾してダウンロードを開始します。ダウンロードには数分~数十分かかります。

history_center.jpg

以上の作業でMetaquotes社のヒストリーデータを取得することができます。

 

次に、各ブローカーで用意されているヒストリーデータの取得方法をご紹介いたします。ブローカーによって準備のあるなしがありますのでご自身でご確認下さい。

今回はFXDDのヒストリーデータの取得方法をご紹介いたします。FXDDは以下のサイトに1分足のヒストリーデータが公開されています。
www.fxdd.com/jp/mt1m-data.html

ここからヒストリーデータをダウンロードします。ダウンロードしたファイルを解凍すると、”USDJPY.hst”(今回はドル円での説明)というファイルが確認できると思います。
このファイルを上の画面にある”インポート”(③)で選択するとMetaTraderにFXDDのヒストリーデータを取得することができます

バックテストをできる限り正確に行うためには、事前に設定とヒストリーデータの収集整理を行う必要があります。今回はその設定と、だれでも簡単にでき全ブローカーに対応したヒストリーデータの収集整理方法を紹介いたします。

 

①MetaTraderの設定

以下の設定をして、バックテストで扱うデータ量を最大化します。

  1. MetaTraderを 起動して、”ツール>オプション”(Ctrl+O)を選択してください。
  2. オプションダイアログが表示されたら、”チャート”タブを選択します。
  3. その中の、”ヒストリー内バーの最大数”9999999999と入力し、”OK”でこの画面を閉じてください。
history_setting.jpg

こうすることで最大化の設定ができます。(再びこの画面を見てみると数字が変わっているのが分かります。)

 

②ヒストリーデータの取得

次にヒストリーデータの取得を行います。今回は、全ブローカーに対応していてもっとも信頼性のある取得方法の紹介です。

  1. データを収集したい通貨ペア(今回はドル円)の1分足を表示させます。(
  2. チャートのズームを最小にします。(
  3. チャートの自動スクロール機能をOFFにします。(

history_chart_ready.jpg

あとはページスクロールが止まるまで、ひたすら”カーソルの左””ページアップ”を押し続けます。

この作業で得られるデータはおおよそ3ヶ月分くらいでしょう。今後は①で設定したデータ量になるまでずっとヒストリーデータが蓄積されていきます。言い方を変えると、3ヶ月間ほどの間MetaTraderを一度も起動せずに放置しておくと、その後データを取得しようとしたときに穴が開くことになります。注意してください。

たった3ヶ月ほどのデータですが、このデータは使用しているブローカーのサーバーデータそのものですので、信頼性が高いです。ヒストリーデータは各社違いますから。

 

③1分足のデータから他の時間足のデータを作る

②で1分足のデータを取得しました。今度はそのデータを利用して他の時間足のデータを作ります。他の時間足で②のようにしてデータを取得する方法もありますが、バックテスト時Mismatched charts errorsが多く発生する原因になりますのでお勧めしません。

  1. まず、ここで一度再起動します。
  2. 次に、”ファイル>オフラインチャート”を選択して下の画面を出します。
  3. この中から先ほど取得した、1分足のデータを選択します。(今回はドル円ですので、USDJPY,M1になりますね)
  4. choose_offlinechart.jpg
    すると、チャートが表示されます。
  5.  次は、以下の画面左下にある”ナビゲーター”内の”Scripts”にある?の”period_converter”)を選択します。すると以下のダイヤログが表示されます。
  6. ”パラメータの入力”タブにある項目、”ExtPeriodMultiplier”の値”value”)をこれから作り上げたい時間足の数値に変更します。たとえば、5分足なら"5"、15分足なら"15"、1時間足なら"60"というように、すべて分で入力します。
  7. 入力後”OK”でダイヤログを閉じると、指定の時間足データが作成されるのです。
period_converter.jpg

同様にして、すべての時間足のデータを作り上げます。(再度"period_converter"を選択すると、エラーのようなダイヤログが出ますが、そのまま”はい”を押して進んでください。)

バックテストをどう考えるかについて書こうと思います。

MT4の便利な機能の一つにバックテストというものがあります。これはご存知の通り、過去のチャートのキャッシュを利用してEAを高速仮想動作させ調査結果を示してくれるものです。非常に画期的な機能ですね。

ある人は、「いくら過去でいい結果を出したって、その手法で明日も同じことが起こるはずがない」なんて言いますよね。間違ってはいないと思います。でもそれが正解でもないと思います。過去のトレード成果を元に近い未来のトレード方法を導き出すことは当たり前に皆さんがしていることだと思います。EA使いとか関係なくトレーダーなら皆、何かの過去のデータを元に「買いだ!」とか「売りだ!」とか判断しています。移動平均線とかの誰もが知っているインジケータだってそうですよね。FX以外にも人間の判断が必要な世の中のすべての出来事には、少なからずなにかの過去データが利用され、時には定義として扱われたりすることだってあるのです。100%の答えが出ているものであればもちろんですが、そうでなくとも、そういったものは必ず参照され、日々鍛錬され精度の高いものとなっていくものです。

バックテストは大事です。勝率を1%でも、収益を1円でも多くするために、バックテストをさまざまな角度から行いましょう。いろいろなパターンのバックテストをやってみると、さまざまな発見があって今後のトレードのヒントになっていきます。engineeeerも一つのEAを作るのに数十回以上のバックテストは必ずしています。

しかしバックテストは、PCの負荷もすごいですし、時間もかかりますし、プログラムを書いている時間よりずっと長いです。ちょっと専門的な話になりますが、MT4のプログラムソフトにはシュミレータやエミュレータたるものが搭載されていません。なので実際どうやって動くかはバックテストするしかないのです。ある一部分の機能を試すためにワザとありえない数値を代入してバックテストにかけたり、そういったことはもう日常茶飯事でとても大変です。逸れました、
engineeeerはこのバックテストの大半は書き留めることなく記憶に頼っています。事故で記憶が吹っ飛んだり、歳を取って記憶がどっかいってしまったらどうするんでしょうね。w 理由はですねぇ、書き込めておく時間があったらもっといろいろなバックテストをしたほうが楽しいし為になると感じるからです。というか、試したいことばかりなのです。もう一つの理由は、書き留めている間に、本来のバックテストも目的を忘れてしまったりすることがあるからですね。engineeeerは天才ではないので、自分なりに効率の良い作業方法を日々模索しています。

そんなこともあり、本職の傍らEA研究に燃えているengineeeerと共に検証していただける人がいたらなぁと思いこのブログをじわじわと作っているのです。

「このパラメータをこうしたら・・・・・」とか、
「こんなパラメータを追加したらどうでしょう・・・」とか、

私も含め、同志の皆で勝利を勝ち取り続けたいものですね。ステキな勇者が現れることを期待しています。

あ、このバックテストですがいろいろと技がありますのでそのうちブログに書きますね。

engineeeerが作るEAに標準で搭載している機能について簡単に説明しておきます。

  • 単利・複利での両運用可能
    もちろんマイクロロットにも対応しています。
  • USD,JPYの口座通貨に対応
    現時点では日本人の方を優先に対象としていますので今後要望があれば他口座通貨に対応いたします。
  • 各ブローカー対応
    最近MT4取り扱い業者が増え、アカウント名や通貨名エクステンションで対応を迫られていますが、随時対応しています。
  • エントリー・エグジットメール送信機能
    ストップやリミットにかかった場合でもメール送信いたします。←これ他所ではなかなか見ないですよ。
  • OCO注文の通らないブローカーへの対策
    成り行き注文&modifyによる修正で対応済みです。FXCM-UKがこれに当たります。
  • バックテストの高速化
    バックテスト時に不要なプログラムの読み込みをすべてフィルタリングしていますのでビックリするほど高速にバックテストを行うことができます。
  • GMT時間差設定の自動化
    ブローカーを変えたときなど、たまにこの重要設定を忘れて失敗エントリーをさせてしまったことが皆さん一度はあるのではないでしょうか?
  • 他EAとの共存を常に考慮
    他作EAと同時に使用してもなんら不具合は無いです。仲良く使ってください。もちろん相手側のEAも同じ対策をしている必要があります。
  • 回線トラブル復旧時も安心レジューム
    MT4はどのブローカのものでも回線が(ボヨ~~~~ン)という音と共に、切れたりします。その復旧時にもユーザーは何ら心配することなく正確に元の状態に復旧するように作られています。
  • ユーザー様の好みでパラメータの調整が可能
    これは、一応限度があります。なぜならアルゴリズムに直接関係している部分が多いからです。なのでユーザーさんの反応を見て部分的に公開していくことになると思います。
     

特に最後のパラメータ調整ですが、ユーザーさんによって、

「PFがとにかく高いほうがいい」とか、

「一日平均3回はトレードをみたい」とか、

好みが違いますよね。どうせ使用するなら自分のトレードスタイルに合ったものをストレス無く楽しく使いたいものですよね。engineeeerはその辺を重要視して考えていきます。

1

 カテゴリ

open all | close all
 ※各最新10エントリー表示

 最近の記事

 最近のコメント

 フラッシュタグクラウド

 お勧めサービス

安心国内WindowsVPS
engineeeerも利用しています♪
レンタルサーバーなら使えるねっと

最近話題の激安中古PCショップ
engineeeerも良く行きますし買います♪
激安PCショップ img

 ランキング

クリック協力よろしくお願いします。
FXランキング ブログランキング
ブログランキング 為替ランキング
FXランキング
人気ブログランキング ページビューランキング
fxランキング ranking
相互リンクとランキングプラス くる天 人気ブログランキング
外為ランキング FX

 相互リンクサイト様(50音順)

リンクして頂ける際はDLしてご使用下さい。
相互リンク用画像
TOPへ